В моем приложении я открываю отчет, используя файл HTML как таковой:
//pStrPath is file:///C:/Users/appts/AppData/Local/Temp/Report_View.htm
ShellExecute(hParentWnd, L"", pStrPath, NULL, NULL, SW_SHOW);
На моем компьютере для разработки он открывается в веб-браузере, но когда я только что протестировал его на новой установке Windows 10, вместо этого он показал это диалоговое окно:
Итак, как я могу предотвратить его отображение и с самого начала использовать опцию «продолжать использовать это приложение»? В противном случае это может быть очень запутанным для моих пользователей.
PS. Обратите внимание, что Edge установлен и может открывать .htm
файлы, если я дважды щелкну их.
Решение проблемы
Ссылаясь на Запуск приложений (ShellExecute, ShellExecuteEx, SHELLEXECUTEINFO) отмечаем текст
Глаголы, доступные для объекта, по сути являются элементами, которые вы найдете в контекстном меню объекта. Чтобы узнать, какие глаголы доступны, посмотрите в реестре HKEY_CLASSES_ROOT \ CLSID {object_clsid}\ Shell \verb
Обычно доступные глаголы включают:
- edit - Запускает редактор и открывает документ для редактирования.
- find - Инициирует поиск, начиная с указанного каталога.
- open — запускает приложение. Если этот файл не является исполняемым, запускается связанное с ним приложение.
- print — распечатывает файл документа.
- properties — отображает свойства объекта.
Учитывая, что двойной щелчок обычно эквивалентен выбору «открыть» в контекстном меню объекта, если мы снабдим функцию глаголом открытия, мы можем ожидать, что поведение будет отражать поведение двойного щелчка пользователя. - См. комментарий Кена ниже
Таким образом, мы можем ожидать, что следующий код достигнет желаемого результата.
//pStrPath is file:///C:/Users/appts/AppData/Local/Temp/Report_View.htm
ShellExecute(hParentWnd, L"open", pStrPath, NULL, NULL, SW_SHOW);
Комментариев нет:
Отправить комментарий