c ++ ShellExecute无效

时间:2015-05-09 00:36:48

标签: windows windows-7 shellexecute

我正在开发一个c ++程序,应该启动Internet Explorer并在Windows 7上显示本地html文件。我正在尝试使用ShellExecute,但它不起作用。我用Google搜索,但找不到有效的答案。这是代码:

ShellExecute(NULL, "open", "start iexplore %userprofile%\\Desktop\\html_files\\file.hml", NULL, NULL, SW_SHOWDEFAULT);

我将命令复制到system()调用中,只是为了查看它是否可行,并且确实如此。这是我试过的system()调用:

system("start iexplore %userprofile%\\Desktop\\html_files\\file.html");



由于系统调用工作,它显然是ShellExecute的问题。基本上,Internet Explorer没有出现。但是,一切都正确编译。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

用户可以自定义用户shell文件夹(包括桌面)的路径,因此不能保证%userprofile\desktop在所有系统上都是正确的路径。获取用户实际桌面路径的正确方式是使用SHGetFolderPath(CSIDL_DESKTOPDIRECTORY)SHGetKnownFolderPath(FOLDERID_Desktop)

您不需要知道iexplorer.exe的路径,Windows知道如何找到它。所以只需指定" iexplorer.exe"本身作为lpFile参数,HTML文件名作为lpParameter参数:

ShellExecute(NULL, "open", "iexplore.exe", "full path to\\file.hml", NULL, SW_SHOWDEFAULT);

据说,这是非常具体的IE。如果要在用户的默认HTML浏览器/查看器中加载文件,请将lpVerb参数设置为NULL,将HTML文件设置为lpFile参数:

ShellExecute(NULL, NULL, "full path to\\file.hml", NULL, NULL, SW_SHOWDEFAULT);

这与用户在Windows资源管理器中双击该文件相同。