MoBiRo
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Вот. Сделал что-то по тому коду, который был дан, но он считывает только большие буквы =( И ещё большой минус в том, что в консоль всё выводится правильно, а если ConsoleWrite заменить на Send, то вылазит много раз один и тот же символ... Можете чем-либо помочь? Код: Dim $Chars [128] = ["q", "й", "w", "ц", "e", "у", "r", "к", "t", "е", "y", "н", "u", "г", "i", "ш", "o", "щ", "p", "з", "[", "х", "]", "ъ", "a", "ф", "s", "ы", "d", "в", "f", "а", "g", "п", "h", "р", "j", "о", "k", "л", "l", "д", ";", "$", "'", "э", "z", "я", "x", "ч", "c", "с", "v", "м", "b", "и", "n", "т", "m", "ь", ",", "б", ".", "ю", "/", "."] 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) HotKeySet("{SCROLLLOCK}", "pressed") Global $pressed = False While 1 Sleep(100) WEnd Func EvaluateKey($nKeyCode) If (($nKeyCode > 64) And ($nKeyCode < 91)) Then $sBuffer = "" $sBuffer &= Chr($nKeyCode) if $pressed = True Then for $i = 0 to 126 if StringLower($sBuffer) = $Chars[$i] Then ConsoleWrite($Chars[$i + 1]) Next EndIf EndIf 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 $aRetasdf[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 pressed() $pressed = Not $pressed ConsoleWrite(@CRLF & "Русская раскладка Включена/Выключена" & @CRLF) EndFunc | Чтобы активировать русскую раскладку, нажмите Scroll Lock и смотрите в консоль... |