C++ 中 运行 外部应用程序的回调

Callback for running an external application in C++

我正在开发一个 Kinect v2 应用程序,该应用程序有时会执行一个与 Kinect v2 一起工作的外部 Unity 迷你游戏。我正在使用 ShellExecute 函数,但我不确定如何实现在 Unity 应用程序关闭后通知主应用程序的回调。我需要它是因为我想在 Unity 运行 建立自己的 Kinect 管理器后暂停主应用程序中的 Kinect 管理器(否则你可以想象两个 Kinect 管理器会同时 运行)。现在的代码如下所示:

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
}

使用ShellExecuteEx代替ShellExecute,在SHELLEXECUTEINFO结构的fMask字段中传递标志SEE_MASK_NOCLOSEPROCESS,然后WaitForSingleObjectRegisterWaitForSingleObjectSHELLEXECUTEINFO 结构的 hProcess 字段中返回的进程句柄上。