mirror of
https://github.com/reactos/reactos.git
synced 2024-10-02 07:26:47 +00:00
[SYSSETUP]
- Move the hotkey loop to its own thread to make it work when modal dialogs are open, and also during device installation CORE-9428 svn path=/trunk/; revision=66914
This commit is contained in:
parent
6a983b9dd4
commit
c73e3e5aa4
|
@ -911,6 +911,53 @@ cleanup:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static DWORD CALLBACK
|
||||
HotkeyThread(LPVOID Parameter)
|
||||
{
|
||||
ATOM hotkey;
|
||||
MSG msg;
|
||||
|
||||
DPRINT("HotkeyThread start\n");
|
||||
|
||||
hotkey = GlobalAddAtomW(L"Setup Shift+F10 Hotkey");
|
||||
|
||||
if (!RegisterHotKey(NULL, hotkey, MOD_SHIFT, VK_F10))
|
||||
DPRINT1("RegisterHotKey failed with %lu\n", GetLastError());
|
||||
|
||||
while (GetMessage(&msg, NULL, 0, 0))
|
||||
{
|
||||
if (msg.hwnd == NULL && msg.message == WM_HOTKEY && msg.wParam == hotkey)
|
||||
{
|
||||
STARTUPINFOW si = { sizeof(si) };
|
||||
PROCESS_INFORMATION pi;
|
||||
|
||||
if (CreateProcessW(L"cmd.exe",
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE,
|
||||
CREATE_NEW_CONSOLE,
|
||||
NULL,
|
||||
NULL,
|
||||
&si,
|
||||
&pi))
|
||||
{
|
||||
CloseHandle(pi.hProcess);
|
||||
CloseHandle(pi.hThread);
|
||||
}
|
||||
else
|
||||
{
|
||||
DPRINT1("Failed to launch command prompt: %lu\n", GetLastError());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UnregisterHotKey(NULL, hotkey);
|
||||
GlobalDeleteAtom(hotkey);
|
||||
|
||||
DPRINT("HotkeyThread terminate\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD WINAPI
|
||||
InstallReactOS(HINSTANCE hInstance)
|
||||
|
@ -920,6 +967,7 @@ InstallReactOS(HINSTANCE hInstance)
|
|||
TOKEN_PRIVILEGES privs;
|
||||
HKEY hKey;
|
||||
HINF hShortcutsInf;
|
||||
HANDLE hHotkeyThread;
|
||||
BOOL ret;
|
||||
|
||||
InitializeSetupActionLog(FALSE);
|
||||
|
@ -964,6 +1012,8 @@ InstallReactOS(HINSTANCE hInstance)
|
|||
CreateDirectory(szBuffer, NULL);
|
||||
}
|
||||
|
||||
hHotkeyThread = CreateThread(NULL, 0, HotkeyThread, NULL, 0, NULL);
|
||||
|
||||
/* Hack: Install TCP/IP protocol driver */
|
||||
ret = InstallInfSection(NULL,
|
||||
L"nettcpip.inf",
|
||||
|
@ -1045,6 +1095,12 @@ InstallReactOS(HINSTANCE hInstance)
|
|||
SetupCloseInfFile(hSysSetupInf);
|
||||
SetSetupType(0);
|
||||
|
||||
if (hHotkeyThread)
|
||||
{
|
||||
PostThreadMessage(GetThreadId(hHotkeyThread), WM_QUIT, 0, 0);
|
||||
CloseHandle(hHotkeyThread);
|
||||
}
|
||||
|
||||
LogItem(SYSSETUP_SEVERITY_INFORMATION, L"Installing ReactOS done");
|
||||
TerminateSetupActionLog();
|
||||
|
||||
|
|
|
@ -2317,7 +2317,6 @@ InstallWizard(VOID)
|
|||
UINT nPages = 0;
|
||||
HWND hWnd;
|
||||
MSG msg;
|
||||
ATOM hotkey;
|
||||
|
||||
/* Clear setup data */
|
||||
ZeroMemory(&SetupData, sizeof(SETUPDATA));
|
||||
|
@ -2409,43 +2408,14 @@ InstallWizard(VOID)
|
|||
hWnd = (HWND)PropertySheet(&psh);
|
||||
ShowWindow(hWnd, SW_SHOW);
|
||||
|
||||
hotkey = GlobalAddAtomW(L"Setup Shift+F10 Hotkey");
|
||||
if (!RegisterHotKey(NULL, hotkey, MOD_SHIFT, VK_F10))
|
||||
DPRINT1("RegisterHotKey failed with %lu\n", GetLastError());
|
||||
while (GetMessage(&msg, NULL, 0, 0))
|
||||
{
|
||||
if (msg.hwnd == NULL && msg.message == WM_HOTKEY && msg.wParam == hotkey)
|
||||
{
|
||||
STARTUPINFOW si = { sizeof(si) };
|
||||
PROCESS_INFORMATION pi;
|
||||
|
||||
if (CreateProcessW(L"cmd.exe",
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE,
|
||||
CREATE_NEW_CONSOLE,
|
||||
NULL,
|
||||
NULL,
|
||||
&si,
|
||||
&pi))
|
||||
{
|
||||
CloseHandle(pi.hProcess);
|
||||
CloseHandle(pi.hThread);
|
||||
}
|
||||
else
|
||||
{
|
||||
DPRINT1("Failed to launch command prompt: %lu\n", GetLastError());
|
||||
}
|
||||
}
|
||||
else if (!IsDialogMessage(hWnd, &msg))
|
||||
if (!IsDialogMessage(hWnd, &msg))
|
||||
{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
UnregisterHotKey(NULL, hotkey);
|
||||
GlobalDeleteAtom(hotkey);
|
||||
|
||||
DeleteObject(SetupData.hTitleFont);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue