关于ShellExecute的问题,菜菜地问问打下们~~

时间:2021-07-23 15:38:56
我用ShellExecute函数相应帮助菜单按钮,打开帮助文档,在窗口刚打开时能够打开帮助文档,但是在出现子窗口后再关闭子窗口就打不开文档了,经过调试发现,ShellExecute函数的返回值从能打开文档时返回0x0000002a变成了不能打开时返回0x00000002,我的ShellExecute函数调用方式如下:
ShellExecute(NULL, "open", LPCTSTR("./帮助文档.Chm"), NULL, NULL, SW_SHOW);
有谁能告诉我是怎么一回事吗?

7 个解决方案

#1


弱弱的问问:是我没表达清楚吗?还是没人知道吗?

#2


ShellExecute Returns a value greater than 32 if successful, or an error value that is less than or equal to 32 otherwise. 
0x00000002 可能是ERROR_PATH_NOT_FOUND The specified path was not found.
ShellExecute(NULL, "open",  LPCTSTR("./帮助文档.Chm"), 
NULL, NULL, SW_SHOW); 
你用的是相对路径。。。

#3


#define SE_ERR_FNF     2    // file not found

返回 2 表示文件不存在。因为打开文档后会更改当前目录的路径,可以在打开文件时,设置 OFN_NOCHANGEDIR 标志,但最好还是使用绝对路径。

#4



同意 3 楼的方法。


在使用 CFileDialog 时加上 OFN_NOCHANGEDIR 标志。

#5


如果打开成功返回的是一个大于32的数

#6


最好不要使用"./帮助文档.Chm"
使用全路径

#7


忘记结贴了,谢谢大家的帮助,已经解决,正是大家群策群力的结果。

#1


弱弱的问问:是我没表达清楚吗?还是没人知道吗?

#2


ShellExecute Returns a value greater than 32 if successful, or an error value that is less than or equal to 32 otherwise. 
0x00000002 可能是ERROR_PATH_NOT_FOUND The specified path was not found.
ShellExecute(NULL, "open",  LPCTSTR("./帮助文档.Chm"), 
NULL, NULL, SW_SHOW); 
你用的是相对路径。。。

#3


#define SE_ERR_FNF     2    // file not found

返回 2 表示文件不存在。因为打开文档后会更改当前目录的路径,可以在打开文件时,设置 OFN_NOCHANGEDIR 标志,但最好还是使用绝对路径。

#4



同意 3 楼的方法。


在使用 CFileDialog 时加上 OFN_NOCHANGEDIR 标志。

#5


如果打开成功返回的是一个大于32的数

#6


最好不要使用"./帮助文档.Chm"
使用全路径

#7


忘记结贴了,谢谢大家的帮助,已经解决,正是大家群策群力的结果。