![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
hooks [D5, Win95/98]
dip56245 © (2002-01-31 16:28:00)Господа, такая проблема: создал библиотеку(хук) для перехвата кнопок вне приложения, работает нормально, только если приложение виндовое, под FAR, DN или других не вин. приложениях - непашет! как это исправить?
Fellomena (2002-02-08 12:00:00) [1]Приведи код в котором ты hook ставишь.
Попробуй ставить не WH_KEYBOARD, а WH_KEYBOARD_LL
Это низкоуровневый фильтр клавы. Может поможет ?
dip56245 (2002-02-07 23:06:00) [2]function KeyboardProc(Code: Integer; wParam, lParam: Integer): Integer; stdcall;
begin
if (Code >= 0) and ((HiWord(lParam) and KF_ALTDOWN) <> KF_ALTDOWN) and ((HiWord(lParam) and KF_REPEAT) <> KF_REPEAT) and ((HiWord(lParam) and KF_UP) <> KF_UP) then begin
if IsWindow(PProgData.WndMain) then PostMessage(PProgData.WndMain, HM_ACTION, Ord(haKBD), wParam);
end;
Result := CallNextHookEx(PProgData^.Hooks.KeyboardHook, Code, wParam, lParam);
end;
Вот мой хук - из-под ФАРа не передает кнопки! 8(
ggrisha (2002-02-04 09:41:00) [3]Можно непосредственно опрашивать порт клавиатуры, но к сожалению под win2k это не проходит.
Serg001 (2002-02-04 08:42:00) [4]Чувак, покажи свою функцию hook.
dip56245 (2002-02-03 20:30:00) [5]Ну так как мне перехватить нажатие клавишь в консольных и ДОСовских прогах? На 21h вешаться?
Виктор Щербаков (2002-01-31 16:55:00) [6]Значит сообщения, связанные с клавиатурой в них не отправляются.
Windows maintains a single system message queue and any number of thread message queues, one for each GUI thread. To avoid the overhead of creating a message queue for non-GUI threads, all threads are created initially without a message queue. The system creates a thread"s message queue only when the thread makes its first call to one of the Win32 API User or GDI functions.
Кстати FAR - просто консольный, т.е. он не ДОСовый.