Конференция "WinAPI" » Перехватить wm_timer
 
  • 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)



    В результате не выдается ни одного сообщения.
    Может кто знает в чем тут проблема?
  • KilkennyCat © (19.06.10 18:47) [1]
    нет ни одного таймера - нет сообщений.
  • 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]
    Я предполагаю, что кто то будет имеено так использовать функцию, но в программе с которой я проверял все должно было пройти великолепно. А как тогда еще можно отлавливать включение таймера?
 
Конференция "WinAPI" » Перехватить wm_timer
Есть новые Нет новых   [134431   +10][b:0][p:0.001]