Как открыть локальный HTML-файл в веб-браузере, когда путь содержит фрагмент URL - PullRequest
2 голосов
/ 26 августа 2011

Я пытаюсь открыть веб-браузер следующими способами.Однако когда браузер открывает путь к URL / файлу, фрагмент фрагментируется (от "#anchorName" до "% 23anchorName"), который, похоже, не обрабатывается.Таким образом, в основном файл открывается, но не переходит в соответствующее место в документе.Кто-нибудь знает, как открыть файл и обработать фрагмент?Любая помощь по этому вопросу будет принята с благодарностью.

пример пути для открытия будет "c: \ MyFile.Html # middle"

    // calls out to the registry to get the default browser
    private static string GetDefaultBrowserPath()
    {
       string key = @"HTTP\shell\open\command";
       using(RegistryKey registrykey = Registry.ClassesRoot.OpenSubKey(key, false))
       {
          return ((string)registrykey.GetValue(null, null)).Split('"')[1];
       }
    }

    // creates a process and passes the url as an argument to the process
    private static void Navigate(string url)
    {
       Process p = new Process();
       p.StartInfo.FileName = GetDefaultBrowserPath();
       p.StartInfo.Arguments = url;
       p.Start();
    }

Ответы [ 4 ]

4 голосов
/ 29 августа 2011

Спасибо всем, кто пытался помочь мне с этим вопросом.С тех пор я нашел решение, которое работает.Я разместил это ниже.Все, что вам нужно сделать, это вызвать навигацию с локальным путем к файлу, содержащему фрагмент.Ура!

    private static string GetDefaultBrowserPath()
    {
       string key = @"HTTP\shell\open\command";
       using(RegistryKey registrykey = Registry.ClassesRoot.OpenSubKey(key, false))
       {
          return ((string)registrykey.GetValue(null, null)).Split('"')[1];
       }
    }

    private static void Navigate(string url)
    {
       Process.Start(GetDefaultBrowserPath(), "file:///{0}".FormatWith(url));
    }
3 голосов
/ 26 августа 2011

Все, что вам нужно, это:

System.Diagnostics.Process.Start(url);
0 голосов
/ 26 августа 2011

Попробуйте полагаться на систему для правильного разрешения проблем:

    static void Main(string[] args)
    {
        Process p = new Process();
        p.StartInfo.UseShellExecute = true;
        p.StartInfo.FileName = "http://stackoverflow.com/questions/tagged/c%23?sort=newest&pagesize=50";
        p.StartInfo.Verb = "Open";
        p.Start();
    }
0 голосов
/ 26 августа 2011

Я не программист на C #, но в PHP я бы сделал urlencode. Когда я сделал поиск в Google по C # и urlencode, он дал эту страницу здесь, в StackOverflow ... кодирование URL с использованием C #

...