|
31 Как проверить, запущена ли вторая копия программы?
const char *mutexname = "mtxUIV2";
//--------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
//-----------------------------------------------------------
HWND hMutex = CreateMutex(NULL, true, mutexname);
DWORD LastErr = GetLastError();
if ((LastErr == ERROR_ALREADY_EXISTS)||
(LastErr == ERROR_INVALID_HANDLE)||
(!hMutex))
{
MessageDlg("Программа уже запущена",
mtError, TMsgDlgButtons() << mbOK, 0);
exit(1);
return 1;
}
//-----------------------------------------------------------
try
{
Application->Initialize();
Application->CreateForm(__classid(TMainForm), &MainForm);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
ReleaseMutex(hMutex);
CloseHandle(hMutex);// по совету BoundsChecker'а :)
return 0;
}
Sergei A Fedorov
*Примечание:
Для имени мьютекса желательно подобрать что-то вроде
"mtxUIV2{01F57C21-EEB8-11D3-B16F-00A0C9E87D61}" , а сам GUID номер генерить
для каждого нового приложения приложения.
Andrew Leonov 2:4641/143.911
Предыдущий вопрос
|
|
Следующий вопрос
источник
by jenyok
|
|
|