Добрый день, есть приложение, написанное в делфи, оно свернуто, есть другое приложение, оно активно, мне нужно перехватить хажатие нескольких клавиш, а именно 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);