Форум: "WinAPI";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
ВнизХуки: Найти похожие ветки
← →
greenrul (2003-05-30 18:42) [0]Я ставлю хук на нажатие любой клавиши в системе ВООБЩЕ:
var
SysHook:HHook=0;
procedure TMainForm.FormCreate(Sender: TObject);
...
SysHook:=SetWindowsHookEx(WH_KEYBOARD, @SysMsgProc, HInstance, 0);
...
end;
function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
begin
CallNextHookEx(SysHook, Code, wParam, lParam);
if code=HC_ACTION then ShowMessage("PrEsSeD")
end;
Но сообщение вылазит только если я нажимаю клавишу в программе, но в других программах - нет.
← →
MBo (2003-05-30 18:46) [1]Статью о хуках читал? Обратил внимание, что общесистемный хук должен быть в DLL?
← →
VMcL (2003-05-31 03:49) [2]>greenrul © (30.05.03 18:42)
Во-первых: >MBo © (30.05.03 18:46)
Во-вторых: function SysMsgProc вызывается в адресном пространстве процесса, в котором "нажали" клавишу, поэтому SysHook = ? (может быть 0, если компилятор Delphi сгенерирует код для инициализации локальных переменных). В Win2K+ SysHook = 0, вроде, проконает. А вот в Win9x - нет.
← →
VMcL (2003-05-31 03:54) [3]>VMcL © (31.05.03 03:49)
Oops... Не обратил внимание наSysHook:HHook =0;
. Примечание о компиляторе - на фиг с пляжа.
← →
Dimaxx (2003-06-01 23:24) [4]Я, кстати, тоже писал общесистемный хук через ДЛЛ. В Вынь9х работало замечательно, а в ХР - нет.
← →
VMcL (2003-06-02 19:32) [5]>Dimaxx (01.06.03 23:24)
Плохо писал. У меня работает.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c