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

标签 delphi keyboard event-handling mouse

我想在Delphi中制作一个不处理鼠标和键盘事件的窗体,并将它们传递到其下方的窗口。我怎样才能做到这一点?

最佳答案

您可以利用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;

关于delphi - 不处理鼠标和键盘事件的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16460607/

相关文章:

string - 从 TStringList 中删除字符串

windows - 如何在 Delphi 中为 Windows 7 上的 Windows 搜索集成编写属性处理程序

Java ListSelectionListener 双重改变值

javascript - 事件监听器无法使用纯 Javascript 动态创建的按钮?

delphi - 如何检查Delphi类是否声明为抽象类?

delphi - TEdit 中的 CapsLock 密码消息在视觉上因 VCL 样式而失败

c# - 在C#中模拟KeyPress到游戏

c - 在 C 中模拟按键

python - 如何将 USB 键盘数据包或使用 ID/代码转换为 ASCII 或其他方便的格式?

vba - 防止子运行