GOOGLE ADS

воскресенье, 10 апреля 2022 г.

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

В моем приложении я открываю отчет, используя файл 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);

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...