HotKeySet("{ESC}", "OnAutoItExit") ;создание массива, где в каждой ячейке будет код символа (Русский алфавит, большие буквы - от А до Я.) Global $Array[33] For $i = 1 to 32 $Array[$i]=191+$i Next Global $i=1 Global Const $WH_KEYBOARD_LL = 13 Global $sBuffer = "" Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr") Global $hMod = DllCall("kernel32.dll", "hwnd", "GetModuleHandle", "ptr", 0) Global $hHook = DllCall("user32.dll", "hwnd", "SetWindowsHookEx", "int", _ $WH_KEYBOARD_LL, "ptr", DllCallbackGetPtr($hStub_KeyProc), "hwnd", $hMod[0], "dword", 0) MsgBox(4096, "", "Можно нажимать любые клавиши на клавиатуре... и смотреть что из этого выйдет") While 1 Sleep(10) WEnd Func EvaluateKey($nKeyCode) If $i=33 Then $i=1 $sBuffer &= Chr($Array[$i]) $i+=1 ToolTip($sBuffer, 0, 70) EndFunc Func _KeyProc($nCode, $wParam, $lParam) Local $aRet, $KEYHOOKSTRUCT If $nCode < 0 Then $aRet = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hHook[0], "int", $nCode, "ptr", $wParam, "ptr", $lParam) Return $aRet[0] EndIf If $wParam = 256 Then $KEYHOOKSTRUCT = DllStructCreate("dword;dword;dword;dword;ptr", $lParam) EvaluateKey(DllStructGetData($KEYHOOKSTRUCT, 1)) EndIf $aRet = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hHook[0], "int", $nCode, "ptr", $wParam, "ptr", $lParam) Return $aRet[0] EndFunc Func OnAutoItExit() If $hStub_KeyProc Then DllCallbackFree($hStub_KeyProc) $hStub_KeyProc = 0 DllCall("user32.dll", "int", "UnhookWindowsHookEx", "hwnd", $hHook[0]) If @HotKeyPressed <> "" Then Exit EndFunc |