gpt4 book ai didi

windows - c++ ShellExecute不工作

转载 作者:可可西里 更新时间:2023-11-01 10:20:31 25 4
gpt4 key购买 nike

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

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 不会出现。不过,一切都可以正确编译。有什么想法吗?

最佳答案

用户的 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 资源管理器中双击该文件一样。

关于windows - c++ ShellExecute不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30134749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com