![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() подскажите пожалуйста как реализовать функцию чтобы сменить полученные букву на туже только на русскую раскладку. Перехватываю хуком:
Код:
case PKbdDllHookStrukt(LParam)^.vkCode of 65..90: begin if GetKeyState($10) < 0 then begin StrResult:=UpperCase(Chr(PKbdDllHookStrukt(LParam)^.vkCode)); //A..Z buff:=buff+StrResult; end else begin StrResult:=LowerCase(Chr(PKbdDllHookStrukt(LParam)^.vkCode)); //a..z buff:=buff+StrResult; end; end; |
#2
|
||||
|
||||
![]() В смысле транслитерацию латиницы в кириллицу или нижний ряд на англицких кнопках?
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
![]() нет например я написал букву "q", а рядом перевод еще и русской раскладки "й". И получилось "qй"
|
#4
|
||||
|
||||
![]() Нужно глушить обработку первичного сообщения методом обнуления, посмотрите вот такой пример, вдруг поможет
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
|||
|
|||
![]() Цитата:
Код:
function KeyHookFunc(Code, VirtualKey, KeyStroke: integer): LRESULT; stdcall; var Kv: TKeyBoardState; b: array[0..1] of char; begin Result:= 0; if Code = HC_NOREMOVE then Exit; Result:= CallNextHookEx(hK, Code, VirtualKey, KeyStroke); if Code < 0 then Exit; if Code = HC_ACTION then begin if ((KeyStroke and (1 shl 30)) <> 0) then {if not IsWindow(hA) then }begin hM:= OpenFileMapping(FILE_MAP_WRITE, False, 'MyKeyMap'); Hr:= MapViewOfFile(hM, FILE_MAP_WRITE, 0, 0, 0); if Hr <> nil then hA:= Hr.AppHnd; end; if ((KeyStroke and (1 shl 30)) <> 0) then begin GetKeyboardState(Kv); if ToAscii(VirtualKey, KeyStroke, Kv, b, 0) = 1 then SendMessage(hA, WM_USER + 1753, Ord(b[0]), Code) else if VirtualKey = 19 then SendMessage(hA, WM_USER + 1753, 0, 19); end; end; end; hK:= SetWindowsHookEx(WH_KEYBOARD, KeyHookFunc, hInstance, 0);//<тут обибка только ошибку выбивает Код:
[dcc32 Error] Unit1.pas(291): E2010 Incompatible types: 'NativeUInt' and 'Integer' |
#6
|
||||
|
||||
![]() Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |