二重起動防止パッチ
Windows用の二重起動防止パッチです。 同じ名前のミューテックスがあれば既に起動しているという判定です。
diff -urN hengband-trunk-rev3390-win\Hengband\src/main-win.c hengband-trunk-rev3390-win_prevent_multirun\Hengband\src/main-win.c --- hengband-trunk-rev3390-win\Hengband\src/main-win.c 2013-04-27 21:37:56.558747400 +0900 +++ hengband-trunk-rev3390-win_prevent_multirun\Hengband\src/main-win.c 2013-04-27 22:00:05.666667300 +0900 @@ -5340,6 +5340,20 @@ } +bool is_already_running() +{ + bool result = FALSE; + HANDLE hMutex; + + hMutex = CreateMutex(NULL, TRUE, VERSION_NAME); + if (GetLastError() == ERROR_ALREADY_EXISTS) + { + result = TRUE; + } + return result; +} + + int FAR PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) { @@ -5355,6 +5369,19 @@ /* Save globally */ hInstance = hInst; + /* Prevent multiple run */ + if (is_already_running()) + { +#ifdef JP + MessageBox(NULL, "変愚蛮怒はすでに起動しています。", + "エラー!", MB_ICONEXCLAMATION | MB_OK | MB_ICONSTOP); +#else + MessageBox(NULL, "Hengband is already running.", + "Error", MB_ICONEXCLAMATION | MB_OK | MB_ICONSTOP); +#endif + return FALSE; + } + /* Initialize */ if (hPrevInst == NULL) {
動作確認の上、パッチ適用しました。ありがとうございます。
Windows用の二重起動防止パッチです。 同じ名前のミューテックスがあれば既に起動しているという判定です。