在我的应用中,我使用HTML文件打开报告,如下所示:

//pStrPath is file:///C:/Users/appts/AppData/Local/Temp/Report_View.htm
ShellExecute(hParentWnd, L"", pStrPath, NULL, NULL, SW_SHOW);

在我的开发机器上,它在网络浏览器中打开,但是当我刚刚在新安装的Windows 10上对其进行测试时,它显示此对话框:

c++ - 如何防止 “How do you want to open this file”对话?-LMLPHP

因此,如何防止它显示并从一开始就使用“继续使用此应用”选项?否则,这可能会使我的用户感到困惑。

PS。请注意,Edge已安装,并且如果我双击它们可以打开.htm文件。

最佳答案

提到Launching Applications (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)时,我们注意到文本

对象动词

可用于对象的动词本质上是您在对象的快捷菜单上找到的项目。若要查找可用的动词,请在注册表中 HKEY_CLASSES_ROOT \ CLSID {object_clsid} \ Shell \ verb

常用动词包括:

  • 编辑-启动编辑器并打开文档进行编辑。
  • 查找-从指定目录开始搜索。
  • 打开-启动应用程序。如果此文件不是可执行文件
    文件,将启动其关联的应用程序。
  • 打印-打印文档文件。
  • 属性-显示对象的属性。


  • 假定双击通常等效于在对象的快捷菜单中选择“打开”,如果我们为函数提供 open 动词,则我们可以预期其行为与用户双击的行为相同。 -请在下面查看Ken的评论

    这样,我们可以期望以下代码达到期望的结果。
    //pStrPath is file:///C:/Users/appts/AppData/Local/Temp/Report_View.htm
    ShellExecute(hParentWnd, L"open", pStrPath, NULL, NULL, SW_SHOW);
    

    10-08 11:54