那如果服务程序需要定时器来定时执行某些功能,需要怎么实现呢?

解决方案 »

  1.   

    和普通应用没什么两样,就是SetTimer,然后处理性WM_TIMER消息。
      

  2.   

    不是吧,我用SetTimer,传递了回调函数,但我跟踪的时候,这个回调函数根本不会执行。
      

  3.   

    SetTimer(NULL,1,1000,TimerProc);
    void CALLBACK TimerProc(HWND hwnd, UINT msg, UINT idEvent, DWORD dwTime)
      

  4.   

    shusong1228(mugong) 
    你写一个服务程序看看,TimerProc会执行吗?
      

  5.   

    我就是从我的服务程序中copy出来的丫?!
      

  6.   

    肯定是别的问题,你看看GetLastError是什么
      

  7.   

    要用消息循环,否则就要另想办法。
    可以起一个线程,进行时间的监视,或者Sleep,醒后发消息。发现Sleep很准,我写的一个服务程序里Sleep完后写日志记录下时间,能精确到毫秒.
      

  8.   

    服务程序一般都是控制台程序,没有消息循环的拉。用
    CreateWaitableTimer
    The CreateWaitableTimer function creates or opens a waitable timer object.HANDLE CreateWaitableTimer(
      LPSECURITY_ATTRIBUTES lpTimerAttributes, // SD
      BOOL bManualReset,                       // reset type
      LPCTSTR lpTimerName                      // object name
    );