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

我在一个函数中,用ShellExecute第一次调用一个exe文件时可以正常打开,第二次调用的时候ShellExecute就返回26(文件共享错误),这个要怎么解决?求达... 我在一个函数中,用ShellExecute第一次调用一个exe文件时可以正常打开,第二次调用的时候ShellExecute就返回26(文件共享错误),这个要怎么解决?求达人指点~
自己解决了!顺便说下原因,帮助同样学习的人!我在ShellExecute之前,用CreateFile打开过这个exe,但是没有CloseHandle。。。所以有遇到同样问题的,很有必要看看之前是否打开过这个文件,是不是又正确关闭了~
展开
 我来答
河马西瓜
2013-07-31 · TA获得超过248个赞
知道小有建树答主
回答量:286
采纳率:0%
帮助的人:162万
展开全部

就用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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式