Блок ввода с клавиатуры полностью - PullRequest
0 голосов
/ 31 января 2012

Есть ли способ полностью заблокировать ввод с клавиатуры?Это также должно блокировать комбинации клавиш, такие как 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 и т. д.

Спасибо!

Ответы [ 2 ]

8 голосов
/ 31 января 2012

Ты слишком много думаешь.

Надлежащий способ настроить киоск, которым можно управлять с помощью мыши, а не клавиатуры, - не иметь подключенной клавиатуры. (Это также делает невозможным кражу недобросовестным пользователем киоска ваша клавиатура.)

Это также означает, что если вам нужно выполнить административные задачи, вы можете подключить клавиатуру (или пульт дистанционного управления), и все будет работать нормально.

2 голосов
/ 01 февраля 2012

Если по какой-либо причине удаление клавиатуры неосуществимо, в программном обеспечении есть неподдерживаемый способ сделать это: удалить значение UpperFilters из

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

Это отключает ввод со всех обычных клавиатурных устройств, но виртуальная клавиатура удаленного рабочего стола по-прежнему будет работать, поэтому вы можете убедиться, что удаленный рабочий стол настроен и работает первым.

Для справки: если вы хотите изменить процесс, UpperFilters обычно является REG_MULTI_SZ, содержащим одну строку "kbdclass" (без кавычек).

...