[C++] Зависает программа (Таймер, функция, таймер)

Тема в разделе "LANGS.C", создана пользователем r2max, 28 авг 2011.

  1. r2max

    r2max Женя

    Публикаций:
    0
    Регистрация:
    30 мар 2011
    Сообщения:
    40
    Адрес:
    Киев
    В общем есть функции FindHookByEXE , FindHookByTitle и DelPhxInj
    Мне надо выполнять их каждые 60 секунд

    Я написал так
    Код (Text):
    1. void __stdcall FindHook()
    2. {
    3.     SetTimer(0, 0, 60000, (TIMERPROC)FindHook);
    4.     if(FindHookByEXE())
    5.         EnumWindows((WNDENUMPROC)FindHookByTitle,0);
    6.     DelPhxInj();
    7.     return;
    8. };
    но через определенное время программа виснет.
    В чем может быть проблема?
    Если надо, скину полные исходники...
    Очень надеюсь на помощь.
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    KillTimer где-нибудь вызывается?
     
  3. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Без Mesage Loop таймеры не работают.
    Тот поток, который создал таймер должен обрабатывать сообщения.
    Простой пример:
    Код (Text):
    1. int WinMain (...)
    2. {
    3.     SetTimer ( , , , Hook);
    4.  
    5.     while (GetMessage (...))
    6.     {
    7.         TranslateMessage (...);
    8.         DispatchMessage (...);
    9.     }
    10.  
    11.     KillTimer (...);
    12.     return 0;
    13. }
    14.  
    15. void __stdcall Hook ()
    16. {
    17.     ... call your functions here ...
    18. }
    Но наверное, вот здесь есть лучший вариант:
    http://msdn.microsoft.com/en-us/library/ms682483(v=vs.85).aspx