2012-05-22 4 views
2

Je souhaite ouvrir un onglet Google Chrome ou un navigateur par défaut. Ensuite, fermez-le, après que l'utilisateur a choisi de le faire.Ouvrir un onglet Chrome et le fermer

J'utilise

Process.Start("HTTP://www.MySite.Com"); 

Pour ouvrir le navigateur, mais je n'ai pas une poignée là-dessus pour la fermer. De même, je ne veux pas fermer tout le navigateur, juste l'onglet que j'ai ouvert.

+0

Umm, ne pas la commande Process.Start vous donner une sorte de poignée? C'est de type Processus, vous pouvez probablement faire quelque chose avec! Je ne pense pas que vous pouvez fermer juste l'onglet si ... peut-être si chaque onglet a son propre processus? – Davio

+0

J'ai essayé Process ChromeTab = Process.Start (...) Puis ChromeTab.Close() Et j'ai reçu une exception Référence d'objet non définie sur une instance d'un objet. –

Répondre

4

Cela fonctionne pour moi dans Firefox:

var proc = Process.Start("firefox.exe", "http://www.google.nl"); 
proc.Kill(); 

Parce que j'ai Firefox mis en mode une fenêtre, il ouvre un onglet. Cet onglet est supprimé (mais pas la fenêtre principale) lorsque j'émets la méthode Kill(). La méthode Close() n'a pas fonctionné pour moi dans ce cas.

Vous pouvez essayer la même chose avec Chrome. Vous devez fournir l'URL en tant qu'argument à un vrai programme au lieu de l'URL elle-même, sinon le proc est nul.

Voici un exemple complet en utilisant le navigateur par défaut:

 string browser = string.Empty; 
     RegistryKey key = null; 
     try 
     { 
      key = Registry.ClassesRoot.OpenSubKey(@"HTTP\shell\open\command"); 

      //trim off quotes 
      if (key != null) 
      { 
       browser = key.GetValue(null).ToString().ToLower().Trim(new[] { '"' }); 
      } 
      if (!browser.EndsWith("exe")) 
      { 
       //get rid of everything after the ".exe" 
       browser = browser.Substring(0, browser.LastIndexOf(".exe", StringComparison.InvariantCultureIgnoreCase) + 4); 
      } 
     } 
     finally 
     { 
      if (key != null) 
      { 
       key.Close(); 
      } 
     } 
     Process proc = Process.Start(browser, "http://www.google.nl"); 
     if (proc != null) 
     { 
      proc.Kill(); 
     } 
+0

Je suis en train d'essayer cela, est-il un moyen de spécifier le navigateur par défaut? –

+0

Aucune idée, peut-être que vous avez à creuser dans le registre ... Voir http://uk.answers.yahoo.com/question/index?qid=20080105121336AAnheHM – Davio

+0

Si je cours cela dans la même méthode, il semble fonctionner, Tab n'ouvre jamais (je suppose qu'il s'ouvre et se ferme rapidement) Mais si je déplace le kill vers une autre méthode, il dit: Can not process request car le processus (6004) s'est terminé. –

Questions connexes