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` с теми же заголовками и текстами.
|
- Диалоги — нативный `MessageBoxW` с теми же заголовками и текстами.
|
||||||
- Пока идёт установка загрузчика, все кнопки затенены; кнопка
|
- Пока идёт установка загрузчика, все кнопки затенены; кнопка
|
||||||
устанавливаемого загрузчика остаётся чуть ярче.
|
устанавливаемого загрузчика остаётся чуть ярче.
|
||||||
|
- Повторный запуск запрещён: второй экземпляр активирует уже открытое окно
|
||||||
|
и сразу завершается.
|
||||||
- Отладочный лог по умолчанию выключен. `PARAVIS_DEBUG_LOG=1` включает
|
- Отладочный лог по умолчанию выключен. `PARAVIS_DEBUG_LOG=1` включает
|
||||||
запись в `%TEMP%\cbl_cpp_debug.log`.
|
запись в `%TEMP%\cbl_cpp_debug.log`.
|
||||||
- Действие «GRUB2 Legacy» использует те же команды bootice `/sectors`, что и
|
- Действие «GRUB2 Legacy» использует те же команды bootice `/sectors`, что и
|
||||||
|
|||||||
@@ -375,6 +375,23 @@ void App::OnPoll()
|
|||||||
|
|
||||||
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR, int)
|
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 app;
|
||||||
app.hInst = hInstance;
|
app.hInst = hInstance;
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user