如何防止“您想如何打开此文件”对话框?

时间:2016-11-09 01:52:56

标签: c++ winapi windows-10 windows-shell

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

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

在我的开发机器上,它在Web浏览器中打开,但是当我刚刚在新安装的Windows 10上测试它时,它显示了这个对话框:

enter image description here

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

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

1 个答案:

答案 0 :(得分:2)

参考Launching Applications (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO)我们注意到文字

<小时/> 对象动词

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

下的注册表中查找

常用动词包括:

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

假设双击是通常相当于选择&#34;打开&#34;在对象的快捷菜单中,如果我们提供带有打开动词的函数,我们可以预期该行为将反映用户双击的行为。 - 请参阅Ken的评论

因此,我们可以期望以下代码实现所需的结果。

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