int main(int argc, char **argv) { #if defined(WIN32) hInstanceMutex = CreateMutex(NULL, true, PACKAGE_MUTEX); if (GetLastError() == ERROR_ALREADY_EXISTS) { if (hInstanceMutex) CloseHandle(hInstanceMutex); SetForegroundWindow(FindWindow(PACKAGE_MUTEX, NULL)); return 1; } g_hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, GetModuleHandle(NULL), 0); // Save the current sticky/toggle/filter key settings so they can be restored them later SystemParametersInfo(SPI_GETSTICKYKEYS, sizeof(STICKYKEYS), &g_StartupStickyKeys, 0); SystemParametersInfo(SPI_GETTOGGLEKEYS, sizeof(TOGGLEKEYS), &g_StartupToggleKeys, 0); SystemParametersInfo(SPI_GETFILTERKEYS, sizeof(FILTERKEYS), &g_StartupFilterKeys, 0); I_AccessibilityShortcutKeys(false); I_SetProcessDPIAware(); #endif myargc = argc; myargv = argv; D_DoomMain(); return 0; }
void I_ShutdownWindows32(void) { DestroyIcon(icon); UnhookWindowsHookEx(g_hKeyboardHook); ReleaseMutex(hInstanceMutex); CloseHandle(hInstanceMutex); I_AccessibilityShortcutKeys(true); }