Наша компания переносит наши справочные системы в формат HTML5 под Flare. Мы также добавили доступ к тематическим разделам в справочные системы, используя Flare CSHID в командной строке URI для прямого доступа к теме, например index.html # CSHID = GettingStarted для запуска справочной страницы GettingStarted.html.Ошибка ShellExecute для локальных URL-адресов html или файлов
Наши приложения написаны на C++ и используют функцию Win32 ShellExecute(), чтобы вызвать приложение по умолчанию, связанное с HTTP, для отображения справочной системы. Мы заметили, что ShellExecute() работает отлично, если не задано значение хэштега, например
ShellExecute (NULL, _T ("open"), _ T ("c: \ Help \ index.html"), NULL, NULL , SW_SHOWNORMAL);
Эта функция запустит браузер по умолчанию, связанный с просмотром HTML-страниц, и в этом случае обработчик протокола File: /// запустится, браузер запустится, и вы увидите файл: /// c:/Help /index.html в адресной строке.
Однако, как только вы добавляете информацию # в теме, ShellExecute() не удается открыть страницу с
ShellExecute (NULL, _T ("открыто"), _ T ("C: \ Help \ index.html # cshid = GettingStarted "), NULL, NULL, SW_SHOWNORMAL);
Если браузер вообще открывается, вы будете перенаправлены в файл: /// c: /Help/index.html без идентификатора темы # cshid = GettingStarted.
Обратите внимание, что это проблема только в том случае, если обработчик Файлового протокола задействован через ShellExecute(), если справочная система работает в Интернете, а обработчик протокола Http или Https задействован, все работает отлично.
Для наших клиентов, некоторые из которых находятся в частной локальной сети, мы не всегда можем полагаться на доступ в Интернет, поэтому наши справочные системы должны поставляться с приложением.