主题:ShellExecute为什么有时会失败?
Geforce7900
[专家分:60] 发布于 2006-09-19 14:27:00
希望在程序中显示帮助文件,chm形式的。
因此用这个函数打开 在程序中这个作为单独的一个菜单项不与其它的共享任何变量。
但是发现不是每次都成功 既然都能打开了说明不是路径设置的错误吧? 而且发现是调用GetOpenFileName之后就再也不能打开了 它们之间有冲突吗?
回复列表 (共6个回复)
沙发
soso0574 [专家分:100] 发布于 2006-09-19 16:39:00
你说的话都不能作为找错误的根据,还是把关键代码拿出来的好
板凳
aaronwang [专家分:16870] 发布于 2006-09-19 18:38:00
不是有返回值可以用来确定是什么错误吗?????有使用吗??
3 楼
Geforce7900 [专家分:60] 发布于 2006-09-19 20:25:00
[quote]你说的话都不能作为找错误的根据,还是把关键代码拿出来的好[/quote]
大哥啊! 你知道我为什么没敢贴上代码 也没敢多说吗? 就是你告诉我不要说得太多啊 现在又嫌少了 我晕了 哈哈……
我做过试验 可能和OPenFIleName有关 我还是贴一回代码 尽量的精简而把问题描述清楚 还得请教你们帮我解答啊
4 楼
Geforce7900 [专家分:60] 发布于 2006-09-19 20:36:00
代码的部分…… 尽量精简
case IDM_HELPTHEME:
if( (int)ShellExecute(hwnd,"open","HelpFile.CHM",NULL,
HelpFilePath,SW_SHOWNORMAL) <= 32 )
MessageBox(hwnd,"无法打开帮助文件,请确认\n文件是否存在或路径正确.",
"错误",MB_OK | MB_ICONERROR);
break;
其中HelpFilePath是一个定义的常量const char[],任何其他代码都没有用到它所以不会改变 改变了也没关系,这个参数本来可以设定为空的
这个是菜单项仅仅这么简单而已,就是打开帮助文件,不与其它任何代码共享变量
还有的是打开文件的自定义菜单项和默认菜单项,程序开始时显示的是默认值,此时可以打开帮助文件,而且点了几次帮助就能打开几个……自从选择自定义以后,但是是真正选了文件的,不是取消的话在单击帮助就提示MessageBox了,而且在选回默认项还是不能打开帮助文件
5 楼
Geforce7900 [专家分:60] 发布于 2006-09-19 20:50:00
测试过……GetOpenFileName时没按确定选择文件之前 ShellExecute的返回值 = 42, > 32。 而选择了自定义的文件后在点击帮助项 打不开帮助文件 返回值 = 2, 小于32不是说明有错误吗?
2 也就是 File not find 但是我明明是没动过帮助文件 而且GetOpenFileName所选择的是音乐文件和帮助文件一点关系都没有啊。
所以我又换方法验证一次,用ShellExecuteEx,还是这种结果,但是打不开windows会以对话框提示,说找不到文件,请单击开始搜索……
怎么会找不到呢? 难道这个函数和GetOpenFileName有冲突?
6 楼
soso0574 [专家分:100] 发布于 2006-09-19 21:14:00
诶,我的QQ315223811,给我你的代码,基本上知道你错在哪里。。。。。
我来回复