Что нового

BlockInput без прав администратора

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Vovsla
я его использовал как _BlockInputEx(1)
Блокировка не сработает, если при вызове функции будет активно окно с правами выше, чем у скрипта.
У меня на Win7 пример "Example - Block ALL, standard usage" блокирует ВСЁ, кроме Ctrl+Alt+Del и Win+L, что логично.
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Хотел сделать блокировку мыши аналогичным способом, но что-то не получается...
Что не так?

Код:
#include <WindowsConstants.au3>
#include <WinAPI.au3>

OnAutoItExitRegister("OnClose")

$hStub_MouseProc = DllCallbackRegister("MouseProc", "long", "int;wparam;lparam")
$hHook_Mouse = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hStub_MouseProc), _WinAPI_GetModuleHandle(0))

$hStub_KeyProc = DllCallbackRegister("KeyProc", "long", "int;wparam;lparam")
$hHook_Keyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), _WinAPI_GetModuleHandle(0))

Sleep(5000)

Func KeyProc($nCode, $wParam, $lParam)
  Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
  If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook_Keyboard, $nCode, $wParam, $lParam)
  If $wParam = $WM_KEYDOWN Then Return 1
  Return _WinAPI_CallNextHookEx($hHook_Keyboard, $nCode, $wParam, $lParam)
EndFunc

Func MouseProc($nCode, $wParam, $lParam)
  Local $tBUTHOOKS = DllStructCreate($tagNMMOUSE, $lParam)
  If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook_Mouse, $nCode, $wParam, $lParam)
  If $wParam = $WM_KEYDOWN Then Return 1
  Return _WinAPI_CallNextHookEx($hHook_Mouse, $nCode, $wParam, $lParam)
EndFunc

Func OnClose()
  _WinAPI_UnhookWindowsHookEx($hHook_Keyboard)
  DllCallbackFree($hStub_KeyProc)
  _WinAPI_UnhookWindowsHookEx($hHook_Mouse)
  DllCallbackFree($hStub_MouseProc)
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Vovsla
Насколько я понимаю, этого вам будет достаточно
Код:
#include <WinAPI.au3>

OnAutoItExitRegister("OnClose")

$hStub_KeyProc = DllCallbackRegister("KeyProc", "long", "int;wparam;lparam")
$hHook_Keyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), _WinAPI_GetModuleHandle(0))

$hStub_MouseProc = DllCallbackRegister("MouseProc", "long", "int;wparam;lparam")
$hHook_Mouse = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hStub_MouseProc), _WinAPI_GetModuleHandle(0))

Sleep(5000)

Func KeyProc($nCode, $wParam, $lParam)
  Return 1
EndFunc

Func MouseProc($nCode, $wParam, $lParam)
  Return 1
EndFunc

Func OnClose()
  _WinAPI_UnhookWindowsHookEx($hHook_Keyboard)
  DllCallbackFree($hStub_KeyProc)
  _WinAPI_UnhookWindowsHookEx($hHook_Mouse)
  DllCallbackFree($hStub_MouseProc)
EndFunc
 
Верх