简单问题,如何禁止程序缩入任务栏(100分)

  • 主题发起人 主题发起人 白乐天
  • 开始时间 开始时间

白乐天

Unregistered / Unconfirmed
GUEST, unregistred user!
点击任务栏上的程序,会缩进任务栏。如何禁止这一动作。

我知道大概用屏蔽消息,不知道是哪个消息管这个。
 
以下只可以禁止应用程序发生的最下化消息,不能禁止用户点击任务栏产生的最小化消息

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
private
{ Private declarations }
Procedure MinMessage(Var msg:TMessage); message WM_SYSCOMMAND;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

Procedure TForm1.MinMessage(Var msg:TMessage);
begin
if msg.WParam <> SC_MINIMIZE then Inherited
else msg.result:=0;
end;

end.
 
谢谢楼上大哥。
还有其他办法么?
 
还有就是HOOK
 
刚做的,可以完美的解决你的问题
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

function HookMinimize(code: integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;

var
Form1: TForm1;
HookMin: DWORD = 0;

implementation

{$R *.dfm}

function HookMinimize(code: integer; wParam: WPARAM; lParam: LPARAM): LRESULT;
begin
if (code=HCBT_MINMAX) and (lParam = SW_MINIMIZE) then Exit;
Result:=CallNextHookEx(HookMin, Code, wParam, lParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
HookMin:=SetWindowsHookEx(WH_CBT, HookMinimize,0, GetCurrentThreadID);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if HookMin<>0 then UnhookWindowsHookEx(HookMin);
end;

end.
 
果然完美,十分感谢!
 
后退
顶部