待辦事項 #31234

二重起動防止パッチ

啟用日期: 2013-04-27 22:05 最後更新: 2020-12-21 22:51

回報者:
負責人:
類型:
狀態:
關閉
元件:
(無)
優先權:
5 - 中
嚴重程度:
5 - 中
處理結果:
修正
檔案:

細節

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)
 	{

Ticket History (3/4 Histories)

2013-04-27 22:05 Updated by: shimitei
  • New Ticket "二重起動防止パッチ" created
2013-04-28 00:01 Updated by: dis-
  • 負責人 Update from (無) to dis-
2013-04-28 00:03 Updated by: dis-
  • Ticket Close date is changed to 2013-04-28 00:03
  • 狀態 Update from 開啟 to 關閉
評語

動作確認の上、パッチ適用しました。ありがとうございます。

2020-12-21 22:51 Updated by: deskull

Attachment File List

No attachments

編輯

Please login to add comment to this ticket » 登入