不知道有没有办法
启动一个外部应用程序,并阻止当前应用程序直到启动的应用程序退出。
目前,我正在使用以下非阻塞方法(MFC)启动
std::string str = "Notepad2.exe";
// Non-blocking. Return immediately.
WinExec(str.c_str(), SW_SHOW);
代码:
SHELLEXECUTEINFO sei = {0};
sei.cbSize = sizeof (SHELLEXECUTEINFO);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.lpVerb = "open";
sei.lpFile = "notepad.exe";
sei.nShow = SW_SHOWNORMAL;
if (ShellExecuteEx (&sei))
{
WaitForSingleObject (sei.hProcess, INFINITE);
}
正如 Jerry 所指出的,这对您自己的 GUI 不利。但是,如果您直接或间接启动的进程执行广播 SendMessage,那么这可能会导致灾难性的死锁,因为您的进程有一个窗口但没有发送任何消息:启动的进程正在等待您的代码处理它的消息,并且你在等它。铛...
您可以改用 MsgWaitForMultipleObjects,或者更好的是,将启动和等待拆分为一个线程,并简单地禁用您不希望用户与之交互的 UI 的任何部分。
我是一名优秀的程序员,十分优秀!