From 3ac3b979bb612ac7ebe33e7c08a9d45b1dcb4dd3 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Thu, 15 Oct 2015 23:39:37 +0000 Subject: [PATCH] [SysSetup] - Fix message processing while waiting for a process to end. See CORE-9342. svn path=/trunk/; revision=69549 --- reactos/dll/win32/syssetup/wizard.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/reactos/dll/win32/syssetup/wizard.c b/reactos/dll/win32/syssetup/wizard.c index da5f76b5ff8..57e5f661eb9 100644 --- a/reactos/dll/win32/syssetup/wizard.c +++ b/reactos/dll/win32/syssetup/wizard.c @@ -858,6 +858,7 @@ SetKeyboardLayoutName(HWND hwnd) static BOOL RunControlPanelApplet(HWND hwnd, PCWSTR pwszCPLParameters) { + MSG msg; if (pwszCPLParameters) { STARTUPINFOW StartupInfo; @@ -885,7 +886,14 @@ RunControlPanelApplet(HWND hwnd, PCWSTR pwszCPLParameters) return FALSE; } - WaitForSingleObject(ProcessInformation.hProcess, INFINITE); + while((MsgWaitForMultipleObjects(1, ProcessInformation.hProcess, FALSE, INFINITE, QS_ALLINPUT|QS_ALLPOSTMESSAGE )) != WAIT_OBJECT_0) + { + while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } CloseHandle(ProcessInformation.hThread); CloseHandle(ProcessInformation.hProcess); return TRUE;