ページ

2007-10-18

二重起動で常駐解除

Use10Keyを二重起動させることで常駐を解除させたいという要望を頂いたのでプログラムを修正してみました。
例によって W-Zero3 Uploaderにアップしています。
 
普段はミューテックスを作って二重起動を防いでいました。
hMutex = CreateMutex(NULL, TRUE, USE10KEY_MUTEX_NAME);
if (hMutex) {
    if (ERROR_ALREADY_EXISTS == GetLastError()) {
        // 既に登録されていれば終了する
        CloseHandle(hMutex);
        hMutex = FALSE;
        return FALSE;
    }
} else {
    return FALSE;
}
 
これを名前付きイベントを使用するように変更してみます。
hEvent = CreateEvent(NULL, FALSE, FALSE, USE10KEY_REMOVE_EVENT);
if (hEvent) {
    if (ERROR_ALREADY_EXISTS == GetLastError()) {
        // 既に登録されていればイベントをシグナル状態にする
        SetEvent(hEvent);
        CloseHandle(hEvent);
        return TRUE;
    }
} else {
    return FALSE;
}

    :
    :

// イベントがシグナル状態になるまで待つ
WaitForSingleObject(hEvent, INFINITE);
 
これで二重起動させることによって電話アプリを元に戻すことができるようになりました。
 
その気になれば "Use10KeyRemoveEvent"という名前付きイベントをシグナル状態にすれば他アプリからでも同じことが出来ます(笑
 
ただ、今のままだとUse10Keyが常駐しているのかどうかが分かりにくいので 何らかのメッセージを表示させた方が分かりやすいかもしれませんね。
 

0 件のコメント: