ShellExecute第一次调用打开一个exe文件可以,第二次就返回26,怎么解决?

2024-12-20 10:25:00
推荐回答(1个)
回答1:

就用ShellExecute连续打开两个不同的文件也会导致崩溃,vs也会一起崩溃了。而且打开的文件之前是没有打开过的。用函数WaitForSingleObject 会等待已经打开的文件关闭后继续执行主程序,虽然不会导致程序崩溃但影响用户体验。问题仍然没有彻底解决

SHELLEXECUTEINFO sei;
memset(&sei, 0, sizeof(SHELLEXECUTEINFO)); 

sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.lpVerb = _T("open");
sei.lpFile = _T("aa.exe");
sei.nShow = SW_SHOWDEFAULT;
ShellExecuteEx(&sei);

WaitForSingleObject(sei.hProcess, INFINITE);
CloseHandle(sei.hProcess);

参考:bbs.csdn.net/topics/30063042