【发布时间】:2012-02-01 10:18:02
【问题描述】:
有没有办法完全阻止键盘输入?这也应该阻止像 WIN+E 这样的组合键。
我找到了这段代码,有没有办法将其更改为仅阻止键盘输入(鼠标需要工作)
procedure TForm1.Button1Click(Sender: TObject) ;
function FuncAvail(dllName, funcName: string; var p: pointer): boolean;
var
lib: THandle;
begin
result := false;
p := nil;
if LoadLibrary(PChar(dllName)) = 0 then exit;
lib := GetModuleHandle(PChar(dllName)) ;
if lib <> 0 then
begin
p := GetProcAddress(lib, PChar(funcName)) ;
if p <> nil then Result := true;
end;
end;
var
BlockInput : function(Block: BOOL): BOOL; stdcall;
begin
if FuncAvail('USER32.DLL', 'BlockInput', @BlockInput) then
begin
ShowMessage('Your Mouse and Keyboard will be blocked for 5 seconds!') ;
BlockInput(true) ;
Sleep(5000) ;
BlockInput(false) ;
end;
end;
end.
此代码是否也适用于 WIN 键等?
谢谢!
【问题讨论】:
-
BlockInput阻止所有用户输入,你不能让它只阻止键盘。你为什么要这样做?也许我们可以想出一个替代方案。 -
嗨,我需要这个用于某种 Kiosk-App,与屏幕的交互只能通过鼠标完成。我不希望有任何方法来规避这种情况,例如按 WIN+E 并打开资源管理器。
-
当然,一个全局键盘钩子可以解决这个问题。无论如何,Windows都没有信息亭模式。或者更好的是,只需将您的应用作为 shell 运行即可。
-
为什么不能把键盘拿走?
标签: windows delphi winapi kiosk-mode