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
,然后WaitForSingleObject
或 RegisterWaitForSingleObject
在 SHELLEXECUTEINFO
结构的 hProcess
字段中返回的进程句柄上。
我正在开发一个 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
,然后WaitForSingleObject
或 RegisterWaitForSingleObject
在 SHELLEXECUTEINFO
结构的 hProcess
字段中返回的进程句柄上。