Как предотвратить диалог «Как вы хотите открыть этот файл»?

В моем приложении я открываю отчет, используя HTML-файл как таковой:

 //pStrPath - это файл:///C:/Users/appts/AppData/ Local/Temp/Report_View.htmShellExecute (hParentWnd, L "", pStrPath, NULL, NULL, SW_SHOW);  

На моей машине разработки он открывается в веб-браузере, но когда Я только что протестировал его на новой установке Windows 10, вместо этого он показал это диалоговое окно:

Итак, как я могу предотвратить его отображение и с самого начала выбрать вариант «продолжать использовать это приложение»? Иначе это может сбить с толку моих пользователей.

PS. Обратите внимание, что Edge установлен и может открывать файлы .htm , если я дважды щелкну по ним.


Что касается запуска приложений (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO) мы обращаем внимание на текст


Object Verbs

Глаголы, доступные для объекта, по сути, являются элементами, которые вы найдете в контекстном меню объекта. Чтобы узнать, какие команды доступны, загляните в реестр в разделе HKEY_CLASSES_ROOT CLSID {object_clsid} Shell verb

Обычно доступные команды включают:

  • edit — запускает редактор и открывает документ для редактирования.
  • find — запускает поиск, начиная с указанного каталога.
  • open — запускает приложение . Если этот файл не является исполняемым файлом, запускается связанное с ним приложение.
  • print — печатает файл документа.
  • properties — отображает свойства объекта.

Учитывая, что двойной щелчок обычно эквивалентно выбору «открыть» в контекстном меню объекта, если мы предоставим функцию с помощью глагола open , мы можем ожидать, что поведение будет отражать поведение двойного щелчка пользователя. — См. комментарий Кена ниже

Таким образом, мы можем ожидать, что следующий код достигнет желаемого результата.

 //pStrPath - это файл:///C:/Users/appts/AppData/Local/Temp/Report_View.htmShellExecute (hParentWnd, L "open", pStrPath, NULL, NULL, SW_SHOW);  

Оцените статью
Botgadget.ru
Добавить комментарий