-
ParamPam (19.06.10 16:17) [0]Приветствую всех!!!
Пытаюсь написать хук обрабатывающий WM_TIMER
Прилагаю код функции из DLL
function SysMsgProc(code : integer; wParam : word; lParam : longint; Message: longint) : longint; stdcall;
begin
if (code < 0) then
begin
SysMsgProc := CallNextHookEx(SysHook, code, wParam, lparam);
Exit;
end;
if (TMSG(pointer(lParam)^).message = WM_TIMER) then
begin
messagebox(0, pchar('WM_TIMER - ' + inttostr(message)), pChar('WM_TIMER'), mb_YesNoCancel);
end;
SysMsgProc := CallNextHookEx(SysHook, code, wParam, lparam);
end;
Вызываю эту функцию
SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProc, HInstance, 0)
В результате не выдается ни одного сообщения.
Может кто знает в чем тут проблема? -
нет ни одного таймера - нет сообщений.
-
ParamPam (19.06.10 19:26) [2]В том то и дело, что таймер есть. Запускал несколько приложений с таймером.
-
Rouse_ © (19.06.10 19:42) [3]wParam не Word имеет тип
-
ParamPam (19.06.10 19:54) [4]Поменял на longint, это не помогло.
-
Rouse_ © (19.06.10 20:03) [5]Ось какая?
-
ParamPam (19.06.10 20:04) [6]Windows XP SP3.
-
Rouse_ © (19.06.10 20:06) [7]Результат выполнения SetWindowsHookEx какой?
-
Rouse_ © (19.06.10 20:08) [8]и еще messagebox на лог в файл хотя-бы замени...
-
ParamPam (19.06.10 20:11) [9]Результат выполнения SetWindowsHookEx = 552476
-
ParamPam (19.06.10 20:13) [10]
> и еще messagebox на лог в файл хотя-бы замени...
Там так и будет, но на период отладки я использую messagebox. -
Сергей М. © (21.06.10 10:25) [11]
> таймер есть. Запускал несколько приложений с таймером
Вот пример запуска таймера, не использующего механизм сообщений:
MyTimer := SetTimer(0,0,1000, @MyCallback);
Таймер чудесно работает безо всяких WM_TIMER.
Ы ? -
Сергей М. © (21.06.10 10:28) [12]Вру)
Имелось ввиду что WH_GETMESSAGE не "поймает" WM_TIMER в колбеке -
ParamPam (22.06.10 19:57) [13]Я предполагаю, что кто то будет имеено так использовать функцию, но в программе с которой я проверял все должно было пройти великолепно. А как тогда еще можно отлавливать включение таймера?