不处理鼠标和键盘事件的表单

时间:2013-05-09 11:23:42

标签: delphi event-handling keyboard mouse ignore

我想在Delphi中创建一个不处理鼠标和键盘事件的表单,并将它们传递给下面的窗口。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用USER32.DLL

的BlockInput过程

你可以试试这个(小心!):

procedure Bloqued(block:boolean);
var
  milib: THandle;
  BlockInput : function(Block: BOOL): BOOL; stdcall;
begin
  milib := GetModuleHandle('USER32.DLL');
  if milib <> 0 then begin
    @BlockInput := GetProcAddress(milib, 'BlockInput');
    if @BlockInput <> nil then begin
       BlockInput(block);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject) ;
begin
  Bloqued(true);
  Sleep(1000);
  Bloqued(false);
end;

没有动态加载的版本:

Function BlockInput (Block: BOOL): BOOL; stdcall; External 'USER32.DLL';

procedure TForm1.Button1Click(Sender: TObject);
begin
  BlockInput(true);
  Sleep(1000);
  BlockInput(false);
end;