Block second instance
This commit is contained in:
1 parent
c9f01a52c1
commit
9089fbf7de
2 files changed
+19
No files matched your search
@@ -40,6 +40,8 @@ build\Release\Change_BootLoader.exe
|
||||
- Диалоги — нативный `MessageBoxW` с теми же заголовками и текстами.
|
||||
- Пока идёт установка загрузчика, все кнопки затенены; кнопка
|
||||
устанавливаемого загрузчика остаётся чуть ярче.
|
||||
- Повторный запуск запрещён: второй экземпляр активирует уже открытое окно
|
||||
и сразу завершается.
|
||||
- Отладочный лог по умолчанию выключен. `PARAVIS_DEBUG_LOG=1` включает
|
||||
запись в `%TEMP%\cbl_cpp_debug.log`.
|
||||
- Действие «GRUB2 Legacy» использует те же команды bootice `/sectors`, что и
|
||||
|
||||
@@ -375,6 +375,23 @@ void App::OnPoll()
|
||||
|
||||
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR, int)
|
||||
{
|
||||
HANDLE instanceMutex = CreateMutexW(nullptr, FALSE,
|
||||
L"Local\\ChangeBootLoader_SingleInstance");
|
||||
if (instanceMutex && GetLastError() == ERROR_ALREADY_EXISTS) {
|
||||
HWND existing = FindWindowW(kMainClass, nullptr);
|
||||
if (existing) {
|
||||
if (IsIconic(existing)) {
|
||||
ShowWindow(existing, SW_RESTORE);
|
||||
}
|
||||
SetForegroundWindow(existing);
|
||||
} else {
|
||||
MessageBoxW(nullptr, L"Change BootLoader уже запущен.",
|
||||
kWindowTitle, MB_ICONINFORMATION | MB_OK);
|
||||
}
|
||||
CloseHandle(instanceMutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
App app;
|
||||
app.hInst = hInstance;
|
||||
|
||||
|
||||
Reference in new issue
Block a user