https://git.reactos.org/?p=reactos.git;a=commitdiff;h=2f83e6a65d5878f2ca0f56bf610eed0da295d9da

commit 2f83e6a65d5878f2ca0f56bf610eed0da295d9da
Author:     Whindmar Saksit <whinds...@proton.me>
AuthorDate: Thu Sep 26 18:06:13 2024 +0200
Commit:     GitHub <nore...@github.com>
CommitDate: Thu Sep 26 18:06:13 2024 +0200

    [RAPPS] Use different mutex and title for AppWiz mode (#7350)
    
    The two different modes needs separate mutex and window titles, otherwise 
you can end up stuck in AppWiz mode.
---
 base/applications/rapps/gui.cpp        | 3 +--
 base/applications/rapps/unattended.cpp | 8 +++++---
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/base/applications/rapps/gui.cpp b/base/applications/rapps/gui.cpp
index 3ce58a00553..562e383685c 100644
--- a/base/applications/rapps/gui.cpp
+++ b/base/applications/rapps/gui.cpp
@@ -749,8 +749,7 @@ CMainWindow::GetWndClassInfo()
 HWND
 CMainWindow::Create()
 {
-    CStringW szWindowName;
-    szWindowName.LoadStringW(IDS_APPTITLE);
+    const CStringW szWindowName(MAKEINTRESOURCEW(m_bAppwizMode ? 
IDS_APPWIZ_TITLE : IDS_APPTITLE));
 
     RECT r = {
         (SettingsInfo.bSaveWndPos ? SettingsInfo.Left : CW_USEDEFAULT),
diff --git a/base/applications/rapps/unattended.cpp 
b/base/applications/rapps/unattended.cpp
index 89add7e853d..38c13caeffe 100644
--- a/base/applications/rapps/unattended.cpp
+++ b/base/applications/rapps/unattended.cpp
@@ -349,16 +349,17 @@ ParseCmdAndExecute(LPWSTR lpCmdLine, BOOL bIsFirstLaunch, 
int nCmdShow)
     if (argc == 1 || bAppwizMode) // RAPPS is launched without options or 
APPWIZ mode is requested
     {
         // Check whether the RAPPS MainWindow is already launched in another 
process
-        HANDLE hMutex;
+        CStringW szWindowText(MAKEINTRESOURCEW(bAppwizMode ? IDS_APPWIZ_TITLE 
: IDS_APPTITLE));
+        LPCWSTR pszMutex = bAppwizMode ? L"RAPPWIZ" : szWindowClass;
 
-        hMutex = CreateMutexW(NULL, FALSE, szWindowClass);
+        HANDLE hMutex = CreateMutexW(NULL, FALSE, pszMutex);
         if ((!hMutex) || (GetLastError() == ERROR_ALREADY_EXISTS))
         {
             /* If already started, find its window */
             HWND hWindow;
             for (int wait = 2500, inter = 250; wait > 0; wait -= inter)
             {
-                if ((hWindow = FindWindowW(szWindowClass, NULL)) != NULL)
+                if ((hWindow = FindWindowW(szWindowClass, szWindowText)) != 
NULL)
                     break;
                 Sleep(inter);
             }
@@ -376,6 +377,7 @@ ParseCmdAndExecute(LPWSTR lpCmdLine, BOOL bIsFirstLaunch, 
int nCmdShow)
                 return FALSE;
             }
         }
+        szWindowText.Empty();
 
         CMainWindow wnd(&db, bAppwizMode);
         MainWindowLoop(&wnd, nCmdShow);

Reply via email to