0

私は PocketPc 6 エミュレーターと wince 6.0 用のアラーム プログラムを作成しようとしています。アラーム時刻はユーザーによって設定され、その時刻に win mobile がアラート メッセージを表示する必要があります。

私はCeRunAppAtTimeとCeSetUserNotificationのように使ってみました

HANDLE hNotify;
SYSTEMTIME sysTime,sys;
CE_USER_NOTIFICATION ceNot;
GetSystemTime(&sysTime);//tryed GetLocalTime(&sys); also
sysTime.wHour = 14;
sysTime.wMinute= 20;
sysTime.wSecond= 00;

ceNot.ActionFlags = PUN_SOUND | PUN_VIBRATE | PUN_LED;
ceNot.pwszSound = L"\\Windows\\beep.wav";

hNotify = CeSetUserNotification(NULL,L"\\ResidentFlash\\my.exe",&sysTime,&ceNot);

しかし、ここでは、コントロールがこの行自体に来ると、すべてのアクションを実行します,,,,,,,,指定された時間にアクションを実行する必要があるこの種の機能は必要ありません,,,,,,,

このタスクを達成するための正しい方法を教えてください。

4

1 に答える 1

0

あなたの通知コードは、14:20:00 にアプリケーションを実行するように OS に指示しているので、それが起こります (これは、「すべてのアクションを実行する」という意味だと思います)。アプリケーション内で特定のタスクのみを実行する場合、最も簡単な方法は、次のように名前付きシステム イベントを設定することです。

CeSetUserNotification(NULL, 
                      _T("\\\\.\\Notifications\\NamedEvents\\MyAppEvent"), 
                      &time, 
                      &notification);

同じ名前が CeRunAppAtTime にも機能します。通知を設定したら、バックグラウンド スレッドでアプリのイベントを待ちます。

hEvent CreateEvent(NULL, FALSE, FALSE, _T("MyAppEvent"));
while(TRUE)
{
    if(WaitForSingleObject(hEvent, 5000) == WAIT_OBJECT_0)
    {
        // the notification has fired.  Do something.
    }
}
于 2010-12-21T14:50:15.363 に答える