Здравствуйте.
Необходимо запускать дочернюю программу если она ещё не запущена:
| Код | HANDLE aMUT = CreateMutexW(NULL,FALSE,L"my_agent"); if(GetLastError() != ERROR_ALREADY_EXISTS) { //запускаю агент
if(ReleaseMutex(aMUT)!=0) ShowMessage("Не смог освободить мутекс!"); WinExec((ExtractFilePath(Application->ExeName) +"agent.exe run_from_client").t_str(),SW_NORMAL); }
|
Перез запуском как видно я высвобождаю "тестирующий" мустекс, но моя дочерняя программа тем не менее не может запуститься так как мутекс уже создан, т.е. ReleaseMutex такое впечателние что не "успевает" сделать своё дело.
| Код | // ПРОВЕРКА НА 2ой запуск aMUT = CreateMutexW(NULL, FALSE, L"my_agent"); if (GetLastError() == ERROR_ALREADY_EXISTS) { { ShowMessage("Уже запущен по мутексу!"); return; } }
|
Может я что то не так делаю (( |