2010-04-15 4 views
4

je dois ouvrir un fichier html à partir du répertoire racine du programme et ont sauter à un point d'ancrage spécifié. Je peux ouvrir le fichier parfaitement bien avec un simplenavigateur par défaut avec le langage HTML de fichier, puis passer à l'ancre spécifique

System.Diagnostics.Process.Start (« site.html »)

mais dès que je tente d'ajouter l'ancre à la fin, il cesse d'être en mesure pour trouver le fichier.

j'ai pu mettre l'ancre en avoir là-bas et encore lancer avec

chaîne Anchor

Anchor = "file: ///". + Environment.CurrentDirectory.ToString() Remplacer (» \ ","/") + " /site.html#Anchor "; System.Diagnostics.Process.Start (Ancre);

Cependant, dès que le navigateur se lance, il laisse tomber l'ancre. Aucune suggestion?

Répondre

2

Vous devrez peut-être inclure l'URL complète entre guillemets pour préserver les caractères spéciaux (comme le #) ou des espaces.

Essayez:

string Anchor = String.Format("\"file:///{0}/site.html#Anchor\"", Environment.CurrentDirectory.ToString().Replace("\\", "/")); 
System.Diagnostics.Process.Start(Anchor); 
+0

ne fonctionne pas pour moi .. ne sais pas pourquoi? Vista/IE7 –

+0

une solution RunCMD? – Kiquenet

5
using Microsoft.Win32; // for registry call. 

private 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 void GoToAnchor(string url) 
{ 
    System.Diagnostics.Process p = new System.Diagnostics.Process(); 
    p.StartInfo.FileName = GetDefaultBrowserPath(); 
    p.StartInfo.Arguments = url; 
    p.Start(); 
} 

// use: 
GoToAnchor("file:///" + Environment.CurrentDirectory.ToString().Replace("\", "/") + "/site.html#Anchor"); 
Questions connexes