Visual c++ ShellExecuteEx在短时间内将焦点转移到以前打开的应用程序,然后再次返回到.exe

Visual c++ ShellExecuteEx在短时间内将焦点转移到以前打开的应用程序,然后再次返回到.exe,visual-c++,shellexecute,shellexecuteex,Visual C++,Shellexecute,Shellexecuteex,我正在使用ShellExecuteEx(&ShExecInfo)启动.exe,当从我的应用程序启动.exe时,windows的焦点会在很短的时间内移向以前打开的应用程序(如windows explore),时间约为1秒,然后返回到.exe。我想我的重点应该是exe,而不是去任何应用程序的短期时间 参考代码: SHELLEXECUTEINFO ShExecInfo; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = S

我正在使用
ShellExecuteEx(&ShExecInfo)
启动
.exe
,当从我的应用程序启动
.exe
时,windows的焦点会在很短的时间内移向以前打开的应用程序(如windows explore),时间约为1秒,然后返回到
.exe
。我想我的重点应该是exe,而不是去任何应用程序的短期时间

参考代码:

SHELLEXECUTEINFO ShExecInfo;
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = mainWndHWnd;
ShExecInfo.lpVerb = L"open";
ShExecInfo.lpFile = L"abc.exe";
ShExecInfo.lpParameters = buffer;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOWNA;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);

如果我没听错的话,你可以打电话给我

ShellExecuteEx(&ShExecInfo);
从一个应用程序中退出,并立即退出它。是这样吗

在这种情况下,您正在创建的进程可能尚未启动/初始化,并且Windows已将焦点设置为某个窗口,因此它将转到先前聚焦的窗口


您可能希望在第一个应用程序中等待第二个应用程序启动,例如,使用waitForInputId()函数。

我尝试使用ShExecInfo.nShow=SW_SHOWNORMAL;但不能解决我的问题,这取决于你的abc.exe。检查它是否快速退出。这种情况可能是它立即退出,然后Windows将焦点放在上一个窗口上。my exe是一个c#form应用程序,它会保留很长时间。此外,焦点会短暂停留在先前打开的应用程序上,并立即返回exe。当我关闭exe时,焦点会转到父应用程序,因为它在父应用程序上是模态的。嗨,abc.exe不会立即退出,它会等待用户的一些输入并处理它,然后退出。重点是exe,但过了一段时间(通过返回上一个应用程序),我问的是调用
ShellExecuteEx()
的应用程序,而不是创建的
abc.exe
。调用
ShellExecuteEx()
后,第一个应用程序是否立即退出?那个
父应用程序是谁?你能叫他们A、B和C,再解释一下情况吗?