2016-08-08 7 views
1

Я работаю над приложением Kinect v2, которое в какой-то момент выполняет внешнюю мини-игру Unity, которая также работает с Kinect v2. Я использую функцию ShellExecute, но я не уверен, как реализовать обратный вызов, который уведомляет основное приложение после закрытия приложения Unity. Мне нужно это, потому что я хочу приостановить работу менеджера Kinect в главном приложении, когда Unity запускает свой собственный (иначе вы можете представить, что два менеджера Kinect будут работать одновременно). Код прямо сейчас выглядит следующим образом:Обратный вызов для запуска внешнего приложения в C++

if (Button->getTag() == "something") 
{ 
    Button->SetActive(false); 

    // TODO Pause Kinect manager 
    ShellExecute(nullptr,L"open",L"UnityApplication.exe",nullptr,nullptr,SW_SHOWNORMAL); 

// TODO to know once Unity Applications has been closed 
// TODO resume Kinect manager 
} 

ответ

2

Использование ShellExecuteEx вместо ShellExecute, передавая флаг SEE_MASK_NOCLOSEPROCESS в fMask поле SHELLEXECUTEINFO структуры, а затем либо WaitForSingleObject или RegisterWaitForSingleObject на процессе возвращаемый дескриптор в hProcess поле из SHELLEXECUTEINFO структура.

+0

Спасибо @cynic, вы правы, это работает! – afkmarc