#include #include /* 既にアプリケーションが起動しているかどうかチェックする * 呼び出し元では、WinMainの初めにこの関数を1度だけ呼び出すようにする * 戻り値:TRUE...すでにアプリケーションが起動しているかどうかを表す真偽値 */ BOOL CheckAppInstance(void) { HANDLE hMutex; DWORD error_no; BOOL bAppInstance = FALSE; hMutex = CreateMutex(NULL, TRUE, "Mutex object for sample code"); /* ミューテックスの作成 */ error_no = GetLastError(); /* エラー番号の取得 */ if (hMutex == NULL) { printf("CreateMutex error: %d\n", error_no); } /* 判定 */ if(error_no == 0) { bAppInstance = FALSE; } else if(error_no == ERROR_ALREADY_EXISTS) { bAppInstance = TRUE; } return(bAppInstance); } void ProcessMutex(void) { if (CheckAppInstance()) { printf("既にアプリケーションが起動しています。\n"); } else { printf("まだアプリケーションは起動していません。\n"); } } int main(void) { ProcessMutex(); return 0; }