![]() |
|
#1
|
|||
|
|||
![]() Добрый день, есть приложение, написанное в делфи, оно свернуто, есть другое приложение, оно активно, мне нужно перехватить хажатие нескольких клавиш, а именно ctrl, chift, delete, insert
Так как хук для меня далекая тема, в интернете нашел код Код:
var g_hhk: HHOOK; State : TKeyboardState; function GetSupport(nCode: Integer; wParam: wParam; lParam: lParam ): LParam; stdcall; var wnd:HWND; begin wnd:=FindWindow(nil,'ActiveWindow'); GetKeyboardState(State); if ((State[vk_Control] And 128) <> 0) then begin SendMessage(wnd, WM_KEYDOWN, VK_F1, 0); SendMessage(wnd, WM_KEYUP, VK_F1, 0); end; if ((State[vk_SHIFT] And 128) <> 0) then begin SendMessage(wnd, WM_KEYDOWN, VK_F2, 0); SendMessage(wnd, WM_KEYUP, VK_F2, 0); end; if ((State[vk_INSERT] And 128) <> 0) then begin SendMessage(wnd, WM_KEYDOWN, VK_F3, 0); SendMessage(wnd, WM_KEYUP, VK_F3, 0); end; if ((State[vk_DELETE] And 128) <> 0) then begin SendMessage(wnd, WM_KEYDOWN, VK_F4, 0); SendMessage(wnd, WM_KEYUP, VK_F4, 0); end; end; exports GetSupport; begin end. Код вроде рабочий, когда нажимаю нужные клавишы, идет посылка нажатий в другое окно, НО ЕСТЬ ОДНО НО!!!! ни какие другие клавиши не работают, т.е. печатать какой то текст, я уже не могу в других окнах, помогите этого избежать Вызываю код из DLL таким образом Код:
button1.click hinstDLL := LoadLibrary('Support.dll'); hkprcKeyboard := GetProcAddress(hinstDLL, 'GetSupport'); SetWindowsHookEx(WH_KEYBOARD, hkprcKeyboard, hinstDLL, 0); Последний раз редактировалось ApxaHGe1, 08.12.2014 в 19:10. |
#2
|
||||
|
||||
![]() Ну как без пиара
![]() Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
ApxaHGe1 (09.12.2014)
|
#3
|
|||
|
|||
![]() Твое приложение активное, там можно и без ДЛЛ
|
#4
|
||||
|
||||
![]() google://CallNextHookEx
jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
ApxaHGe1 (08.12.2014)
|
#5
|
|||
|
|||
![]() Благодарю за подсказку..
добавил в код ДЛЛ result := CallNextHookEx(hhk, nCode, wParam, lParam); и все в порядке) |