![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему SetWindowsHookEx не пашет, если активно Dos-окно ? [D6, Win95/98]
Phantomaz © (2004-02-25 19:35:00)использую следующий код (естессно в DLL):
function SysMsgProc(Code: Integer;
WParam: Longint;
var Msg: TMsg): Longint;
const
PROCESS_TERMINATE = $0001;
var
PrID : Cardinal;
begin
case Msg.Message of
WM_KEYDOWN: case msg.WParam of
VK_F1 : //
VK_F2 : //
...
end;
end;
Result := CallNextHookEx(GetCurrentThreadId,
Code,
WParam,
Longint(@Msg));
end;
// Процедура запуска ловушки
procedure SysHook;
begin
SysHook := SetWindowsHookEx(WH_GETMESSAGE,
@SysMsgProc, HInstance,
0);
end;
Так вот нажатие клавиш F1, F2 и др. не срабатывает, если в данный момент активно DOS-приложение или окно, например, Norton Commander. Что нужно сделать, чтобы заработало ?
Phantomaz (2004-02-27 19:00:00) [1]Пишу прогу, которая должна уметь принудительно закрывать любое (!) активное окно
Digitman (2004-02-26 18:24:00) [2]предвосхищаю очередной вопрос :
"ну и как написать и использовать собственный драйверт режима ядра ?"
)
и сразу контрвопрос - а на кой ляд вообще тебе этот надо ?
ты в состоянии описать конечную задачу ?
Digitman (2004-02-26 18:22:00) [3]
> Phantomaz (26.02.04 18:21) [6]
> как сделать
написать и использовать собственный драйверт режима ядра
Phantomaz (2004-02-26 18:21:00) [4]Да, действительно, Win98 :)
Ну так как сделать перехват нажатия клавиш ВЕЗДЕ -
и в GUI, и в DOS ????????
VMcL (2004-02-26 16:47:00) [5]>>людь (26.02.04 07:18) [3]
>[D6, Win95/98]
Win95/98 - это по-твоему win16?
Digitman (2004-02-26 08:08:00) [6]
> нажатие клавиш F1, F2 и др. не срабатывает
то приложение, которое в дан.момент имеет фокус ввода, и получает при помощи внедренного в него хука извещение о нажатии клавиши
глоб.хук м.б. установлен только в GUI-приложения, ни в DOS- ни в консольные приложения глоб.хук внедрен быть не может
людь (2004-02-26 07:18:00) [7]
> VMcL
Да и разве глаб. нуки будут работать на win16?
VMcL (2004-02-25 20:18:00) [8]>>Phantomaz (25.02.04 19:36) [1]
Глобальныйхук долженнаходиться в DLL - F1.
Phantomaz (2004-02-25 19:36:00) [9]и ещё - можно сделать перехват нажатия клавиш без DLL ?