2009-05-21 6 views

答えて

5

方法についてSetTimer

  1. set timerのコールバックとして使用するラッパー関数を作成します。
  2. ラッパー関数が関数を呼び出します。
  3. 関数が終了した後、ラッパー関数はSetTimerを再度呼び出してタイマーを再設定します。
1

サイドノートと同様、OSで実行できるコードで何かをやっていないことを願っています。 (私は言うべきあなたの要求については十分に分かっていませんが、私はそれを指摘したいと思いました)。

タスクスケジューラ(ウィンドウ)は、定期的なタスクのスケジューリングに使用されるもので、手作業によるソリューションよりも優れています。

0

SetTimer!

例:

#include <windows.h> 
    #include <stdio.h> 

    void CALLBACK scheduled_task_1 (HWND hwnd, UINT msg, UINT id, DWORD time) 
    { 
     puts("Executing scheduled_task_1 every half-second event"); 
    } 

    void CALLBACK scheduled_task_2 (HWND hwnd, UINT msg, UINT id, DWORD time) 
    { 
     puts("Executing scheduled_task_2 every two seconds event"); 
    } 

    void CALLBACK scheduled_task_3 (HWND hwnd, UINT msg, UINT id, DWORD time) 
    { 
     puts("Executing scheduled_task_3 24 hours event"); 

    } 

    void messageLoop(void) { 
    MSG msg; 
    while (GetMessage(&msg, NULL, 0, 0) > 0) 
     DispatchMessage(&msg); 
    } 

    int main(void) 
    { 
    while(true) 
    { 
     SetTimer (NULL, 0, 500, scheduled_task_1); /* every half-second */ 
     SetTimer (NULL, 0, 2000, scheduled_task_2); /* every two seconds */ 
     SetTimer (NULL, 0, 60*60*24*1000, scheduled_task_3); /* after 24 hours or 86400000 milliseconds */ 
     messageLoop(); 
    } 
    return 0; 
    } 
+0

は、どのように私は戻って通話を行うことができますし、コールバックに値を渡しますか?例:void CALLBACK scheduled_task_1(HWND hwnd、UINT msg、UINT id、DWORD時刻、int my_number){..}; ? – programmer

関連する問題