Delphi 任务栏

使程序不在任务栏列出。

// 设置窗口类型为工具栏,不在任务栏显示

SetWindowLong(Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);

// 隐藏/显示 窗口

ShowWindow(application.Handle,sw_hide);
ShowWindow(application.Handle,sw_show);

最小化到任务栏及隐藏

// 将主窗口的最小化消息传到 Application

procedure TForm1.proc_syscommand(var msg:TMessage); message WM_SYSCOMMAND;
begin
   case msg.WParam of
   SC_MINIMIZE:
      begin
         sendmessage(application.handle,WM_SYSCOMMAND,makewparam(SC_MINIMIZE,0),0);
         msg.Result:=0;
      end;
   else
      inherited;
   end;
end;

// Application 最小化时隐藏(任务栏不显示)

procedure TForm1.proc_minimize(sender:TObject);
begin
   showwindow(application.Handle,sw_hide);
end;

 

// Application 最小化事件

application.OnMinimize := Form1.proc_minimize ;

 

// 显示及恢复窗口大小

showwindow(application.Handle,sw_show);
sendmessage(application.Handle,WM_SYSCOMMAND,makewparam(SC_RESTORE,0),0);
SetForegroundWindow(application.handle);

检测窗口是否已经最小化

function isMinimize(h : HWND) : boolean;
var
   winplace : WINDOWPLACEMENT;
begin
   winplace.length := sizeof(winplace);
   getwindowplacement(h, @winplace);
   result := (winplace.showCmd = SW_SHOWMINIMIZED);
end;