Как открыть 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);
Пожалуйста, дайте мне знать, если это работает или нет для вас.