ShellExecute未打开HTML文件

时间:2014-01-03 22:19:20

标签: c++ visual-studio-2010 winapi shellexecute

ShellExecute(NULL, TEXT("open"), TEXT("report\index.html"), NULL, NULL, SW_SHOWNORMAL);

以上是我的代码行,由于某种原因,我无法打开文件。以下是我尝试过的所有内容。

ShellExecute(NULL, TEXT("open"), TEXT("report/index.html"), NULL, NULL, SW_SHOWNORMAL);

ShellExecute(NULL, L"open", L"report\index.html", NULL, NULL, SW_SHOWNORMAL);

ShellExecute(NULL, _T("open"), _T("report\index.html"), NULL, NULL, SW_SHOWNORMAL);

下面列出了我所包含的内容。

// Windows Header Files:
#include <windows.h>

// C RunTime Header Files
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>

#include <Shellapi.h>

我的文件结构结构如下:

Downloads/test/program.exe
Downloads/test/report/index.html

这是第一次编写此代码,我真的不知道何时需要区分“/”和“\”。我相信我需要使用TEXT(),因为当我进入我的VS2010项目时,属性&gt;字符集说:使用Unicode字符集。或者至少我相信我必须使用TEXT(),我真的不确定。

我是否还需要提供文件的完整路径,而不是假设它从我的exe所在位置开始?如果是这样,有一个快速简单的函数调用来获取完整的目录路径?它只是我遗漏的包含文件吗?

1 个答案:

答案 0 :(得分:1)

如果您传递的是硬编码路径,则路径必须是Windows样式,并带有反斜杠,当然反斜杠必须两次才能转义。

ShellExecute(NULL, TEXT("open"), TEXT("report\\index.html"), NULL, NULL, SW_SHOWNORMAL);

如果您使用的不是完整路径,那么当然必须确保路径实际可以从应用程序的当前工作目录中访问。