ShellExecute第一次调用打开一个exe文件可以,第二次就返回26,怎么解决? 10
我在一个函数中,用ShellExecute第一次调用一个exe文件时可以正常打开,第二次调用的时候ShellExecute就返回26(文件共享错误),这个要怎么解决?求达...
我在一个函数中,用ShellExecute第一次调用一个exe文件时可以正常打开,第二次调用的时候ShellExecute就返回26(文件共享错误),这个要怎么解决?求达人指点~
自己解决了!顺便说下原因,帮助同样学习的人!我在ShellExecute之前,用CreateFile打开过这个exe,但是没有CloseHandle。。。所以有遇到同样问题的,很有必要看看之前是否打开过这个文件,是不是又正确关闭了~ 展开
自己解决了!顺便说下原因,帮助同样学习的人!我在ShellExecute之前,用CreateFile打开过这个exe,但是没有CloseHandle。。。所以有遇到同样问题的,很有必要看看之前是否打开过这个文件,是不是又正确关闭了~ 展开
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询