Как открыть HTML-файл с якорем (#) в C# с браузером по умолчанию

Я пытаюсь открыть файл контекстной справки в C#.

Когда я не указываю якорь, он работает отлично.

Process.Start("C:/Help/Help.htm")

Но когда я указываю якорь, он не открывается

Process.Start("C:/Help/Help.htm#_Toc342057538")

Внутренне это меняется '#' в '%23' и путь становится "c:\Help.htm%23_Toc342057538" какой браузер не может распознать.

Браузер успешно открывает путь "c:\Help.htm#_Toc342057538"

Как остановить это автоматическое преобразование с помощью Process.Start. Такое же поведение наблюдается, если я даю метку привязки в качестве другого аргумента или использую класс Uri.

РЕДАКТИРОВАТЬ То же поведение наблюдается, когда я ввожу строку в Window Run. Следующая команда также конвертировать # в %23, который браузер не может распознать.

chrome c:/Help.htm#_Toc342057538

2 ответа

Решение

В моей системе Windows 7, оба из следующих откройте C:\Help\Help.htm в Internet Explorer и прокрутите до якоря _Toc342057538:

Process.Start("iexplore", "file://C:/Help/Help.htm#_Toc342057538");
Process.Start("iexplore", @"C:\Help\Help.htm#_Toc342057538");

Для Firefox и Chrome только file протокол вроде работает:

Process.Start("firefox", "file://C:/Help/Help.htm#_Toc342057538");
Process.Start("chrome", "file://C:/Help/Help.htm#_Toc342057538");

Попробуйте это. Я просто сделал это сам и работая в Internet Explorer

string s = "file:///D:/tmp/test.html%23test";
      s = uri.UnescapeDataString(s);

      Process.Start(s);

Пожалуйста, дайте мне знать, если это работает или нет для вас.

Другие вопросы по тегам