1
0
mirror of https://github.com/valinet/ExplorerPatcher.git synced 2025-02-17 11:08:41 +01:00

Properties GUI is restarted after setup

This commit is contained in:
Valentin Radu 2021-11-16 04:22:44 +02:00
parent 4b66794fc7
commit 8f9ecf68e4
2 changed files with 90 additions and 15 deletions

View File

@ -3129,7 +3129,7 @@ DWORD WindowSwitcher(DWORD unused)
void WINAPI LoadSettings(BOOL bIsExplorer)
{
HKEY hKey = NULL;
DWORD dwSize = 0;
DWORD dwSize = 0, dwTemp = 0;
RegCreateKeyExW(
HKEY_CURRENT_USER,
@ -3137,7 +3137,7 @@ void WINAPI LoadSettings(BOOL bIsExplorer)
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_READ | KEY_WOW64_64KEY,
KEY_READ | KEY_WOW64_64KEY | KEY_WRITE,
NULL,
&hKey,
NULL
@ -3157,17 +3157,17 @@ void WINAPI LoadSettings(BOOL bIsExplorer)
&bAllocConsole,
&dwSize
);
DWORD bMemcheck = FALSE;
dwSize = sizeof(DWORD);
dwTemp = 0;
RegQueryValueExW(
hKey,
TEXT("Memcheck"),
0,
NULL,
&bMemcheck,
&dwTemp,
&dwSize
);
if (bMemcheck)
if (dwTemp)
{
#if defined(DEBUG) | defined(_DEBUG)
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
@ -3178,13 +3178,13 @@ void WINAPI LoadSettings(BOOL bIsExplorer)
_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT);
_CrtDumpMemoryLeaks();
#endif
bMemcheck = FALSE;
dwTemp = 0;
RegSetValueExW(
hKey,
TEXT("Memcheck"),
0,
REG_DWORD,
&bMemcheck,
&dwTemp,
sizeof(DWORD)
);
}
@ -3418,6 +3418,29 @@ void WINAPI LoadSettings(BOOL bIsExplorer)
&bToolbarSeparators,
&dwSize
);
dwSize = sizeof(DWORD);
dwTemp = 0;
RegQueryValueExW(
hKey,
TEXT("OpenPropertiesAtNextStart"),
0,
NULL,
&dwTemp,
&dwSize
);
if (dwTemp)
{
LaunchPropertiesGUI(hModule);
dwTemp = 0;
RegSetValueExW(
hKey,
TEXT("OpenPropertiesAtNextStart"),
0,
REG_DWORD,
&dwTemp,
sizeof(DWORD)
);
}
RegCloseKey(hKey);
}

View File

@ -364,14 +364,66 @@ int WINAPI wWinMain(
GetSystemDirectoryW(wszPath, MAX_PATH);
wcscat_s(wszPath, MAX_PATH, L"\\taskkill.exe");
ShellExecuteW(
NULL,
L"open",
wszPath,
L"/f /im explorer.exe",
NULL,
SW_SHOWMINIMIZED
);
SHELLEXECUTEINFOW sei;
ZeroMemory(&sei, sizeof(SHELLEXECUTEINFOW));
sei.cbSize = sizeof(sei);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.hwnd = NULL;
sei.hInstApp = NULL;
sei.lpVerb = NULL;
sei.lpFile = wszPath;
sei.lpParameters = L"/f /im explorer.exe";
sei.hwnd = NULL;
sei.nShow = SW_SHOWMINIMIZED;
if (ShellExecuteExW(&sei) && sei.hProcess)
{
WaitForSingleObject(sei.hProcess, INFINITE);
CloseHandle(sei.hProcess);
}
DWORD dwGUIPid = 0;
GetWindowThreadProcessId(FindWindowW(L"ExplorerPatcher_GUI_" _T(EP_CLSID), NULL), &dwGUIPid);
if (dwGUIPid)
{
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwGUIPid);
if (hProcess)
{
TerminateProcess(hProcess, 0);
CloseHandle(hProcess);
HKEY hKey = NULL;
DWORD dwSize = 0;
RegCreateKeyExW(
HKEY_CURRENT_USER,
TEXT(REGPATH),
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_READ | KEY_WOW64_64KEY | KEY_WRITE,
NULL,
&hKey,
NULL
);
if (hKey == NULL || hKey == INVALID_HANDLE_VALUE)
{
hKey = NULL;
}
if (hKey)
{
dwSize = TRUE;
RegSetValueExW(
hKey,
TEXT("OpenPropertiesAtNextStart"),
0,
REG_DWORD,
&dwSize,
sizeof(DWORD)
);
RegCloseKey(hKey);
}
}
}
if (bOk)
{