如果用这种方式调用,程序没有反应
ShellExecute(NULL, TEXT("open"), TEXT("help.chm"), NULL, NULL, SW_SHOWNORMAL);如果用这种方式调用,程序提示不能打开help.chm文件
ShellExecute(NULL, TEXT("open"), TEXT("hh.exe"), TEXT("help.chm"), TEXT(".\\"), SW_SHOWNORMAL);help.chm和程序在同一个目录中
什么原因呢?
ShellExecute(NULL, TEXT("open"), TEXT("help.chm"), NULL, NULL, SW_SHOWNORMAL);如果用这种方式调用,程序提示不能打开help.chm文件
ShellExecute(NULL, TEXT("open"), TEXT("hh.exe"), TEXT("help.chm"), TEXT(".\\"), SW_SHOWNORMAL);help.chm和程序在同一个目录中
什么原因呢?
解决方案 »
- 非模态对话框覆盖住对话框的问题
- 连续删除空目录会出错!_rmdir
- 用打点法 画宽线 高人请进
- 一个有利于保护视力的电脑颜色设置方案,您知道的话可以分享下您的经验,不知道的话可以试一下。另外请版主不要把帖子转到水区,我想和每一个整天面对电脑辛勤工作的朋友们共同分享。谢谢。
- 注册表保存不了信息!!!!
- 高分求一排序算法
- FT!!又是多文档!请告诉我怎样更改多文档程序的标题拦?
- struct MO_msg{sourceUser char(21);msg char(161)} 赋值 简单。马上给分噢
- 请教:W2K下目录的安全权限问题,大侠帮帮看看(急!)
- Tree Control中如何显示硬盘中的文件?
- rename DeleteFile的问题,大家帮忙瞧一下
- 请教CInternetSession OpenUrl问题?
1、使用绝对路径。
2、分清楚工作目录和exe所在目录
当在vc Ide环境中运行程序,相对路径是以工作目录为基准。
当在资源管理器中运行程序,相对路径是以exe所在目录为基准。
二者并不相同。ShellExecute(NULL, TEXT("open"), TEXT("hh.exe"), TEXT("help.chm"), TEXT(".\\"), SW_SHOWNORMAL);
这个写法中的相对路径是以exe所在目录为基准,必须直接在资源管理器中运行exe程序,而不是在vc Ide环境中运行。
楼主可以尝试验证。至于如何在vc ide环境中取得exe所在目录,可参考如下示例:
#include <string>
#include <shellapi.h>
#include <windows.h>
using namespace std;int main(int argc, char **argv)
{
char fn[256];
GetModuleFileNameA(NULL,fn,256);
string str(fn);
str=str.substr(0,str.find_last_of('\\'));
str+="\\CppReference.chm";//请自行修改
ShellExecuteA(NULL, "open", str.c_str(),NULL,NULL,SW_SHOWNORMAL);
return 0;
}
ShellExecute(NULL, TEXT("open"), TEXT("hh.exe"), TEXT("help.chm"), TEXT(".\\Debug\\"), SW_SHOWNORMAL);