Я пытаюсь открыть старый файл chm (скомпилированный HTML) для указанной закладки с помощью C# - не спрашивайте почему;)
var psi = new ProcessStartInfo("hh.exe");
psi.Arguments = @"ms-its:X:/MyApplication/Help/MYHELPFILE.chm::MYHELPFILE.htm#36531"; // 36531 is my "topic path"
var cmdProcess = Process.Start(psi);
При этом открывается правильный файл, однако он не открывается в отмеченном закладкой месте (36531).
Когда я вызываю hh непосредственно из командной строки, он отображает правильный файл в месте, отмеченном закладкой:
hh ms-its:X:/MyApplication/Help/MYHELPFILE.chm::MYHELPFILE.htm#36531
Я использую аргументы командной строки, как указано здесь.
Почему эти два метода передачи аргументов не эквивалентны? Почему моя закладка игнорируется, когда я звоню через Process.Start?





Проблема была связана с открытием файла по сети, которое MS заблокировала по умолчанию из соображений безопасности.
Следующее исправление работает для прямого открытия файлов: https://www.helpscribble.com/chmnetwork.html
Однако при открытии через дочерний процесс это не работает (загружает файл, но не HTML-контент).
Решение: скопируйте все файлы .chm в локальный каталог, например, C: / help /, и прочтите оттуда.
Вы уже оценили HelpNavigator?