用一个程序控制另一个程序,使它不在任务栏显示?

解决方案 »

  1.   

    发送SendMessage(hHandle,WM_SYSCOMMAND,SC_MINIMIZE,0 );
    然后在接收放的窗体中拦截,WMSysCommand(var Message: TMessage);中写相应代码。
    下面的是把窗口送到托盘栏的代码,你改一下就OK 了。
    procedure TForm1.WMSysCommand(var Message: TMessage);
    var 
      lpData:PNotifyIconData; 
    begin
     if Message.WParam = SC_ICON then 
     begin 
       //如果用户最小化窗口则将窗口 隐藏并在任务栏上添加图标
       lpData := new(PNotifyIconDataA); 
       lpData.cbSize := 88; 
    //SizeOf(PNotifyIconDataA); 
       lpData.Wnd := Form1.Handle; 
       lpData.hIcon := Form1.Icon.Handle; 
       lpData.uCallbackMessage := WM_BARICON; 
       lpData.uID :=0; 
       lpData.szTip := 'Samples'; 
       lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; 
       Shell_NotifyIcon(NIM_ADD,lpData); 
       dispose(lpData); 
       Form1.Visible := False; 
     end 
     else 
     begin 
       //如果是其它的SystemCommand 消息则调用系统缺省处理函数处理之。
       DefWindowProc(Form1.Handle,Message.Msg,Message.WParam,Message.LParam);
     end; end;