0

キーボード入力を完全にブロックする方法はありますか? これにより、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 キーなどでも動作しますか?

ありがとう!

4

2 に答える 2

8

あなたはあまりにも一生懸命考えています。

キーボードではなくマウスで制御できるキオスクを設定する適切な方法は、キーボードを接続しないことです。 (これにより、悪意のあるキオスクユーザーがキーボードを盗むこともできなくなります。)

これは、管理タスクを実行する必要がある場合は、キーボード(またはリモート入力)を接続でき、すべてが正常に機能することも意味します。

于 2012-01-31T18:57:55.687 に答える
2

何らかの理由でキーボードを削除できない場合は、ソフトウェアでこれを行うサポートされていない方法があります。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96B-E325-11CE-BFC1-08002BE10318}

これにより、すべての通常のキーボード デバイスからの入力が無効になりますが、リモート デスクトップの仮想キーボードは引き続き機能するため、最初にリモート デスクトップが構成され、機能していることを確認することをお勧めします。

参考までに、プロセスを逆にする必要がある場合、UpperFilters は通常、単一の文字列 "kbdclass" (引用符なし) を含む REG_MULTI_SZ です。

于 2012-02-01T02:18:02.597 に答える