Ouvrir une URL dans une nouvelle fenêtre de navigateur processus
- Je besoin pour ouvrir une URL dans une nouvelle fenêtre de navigateur processus. J'ai besoin d'être informé lorsque que le processus du navigateur se ferme. Le code que j'utilise actuellement est la suivante:
Process browser = new Process();
browser.EnableRaisingEvents = true;
browser.StartInfo.Arguments = url;
browser.StartInfo.FileName = "iexplore";
browser.Exited += new EventHandler(browser_Exited);
browser.Start();
Clairement, ce ne sera pas dû parce que le "nom de fichier" est fixé à iexplore, non pas à l'utilisateur par défaut du navigateur web. Comment puis-je comprendre ce que l'utilisateur du navigateur web par défaut est?
Je suis en cours d'exécution sur Vista->avant. Si XP serait agréable à l'appui si possible.
Un peu plus de contexte: j'ai créé un petit serveur web autonome qui sert certains des fichiers d'un disque local. À la fin du démarrage du serveur, je veux commencer le navigateur. Une fois que l'utilisateur se fait et se ferme le navigateur, je voudrais quitter le serveur web. Le code ci-dessus fonctionne parfaitement, d'autres que d'utiliser IE.
Merci d'avance!
OriginalL'auteur Gordon | 2009-04-12
Vous devez vous connecter pour publier un commentaire.
Ok. J'ai maintenant de travail code C# pour faire ce que je veux. Ce sera le retour de la "ligne de commande", il vous faut exécuter pour charger la valeur par défaut du navigateur:
Ouf! Merci à tous pour l'aide en me poussant vers la bonne réponse!
OriginalL'auteur Gordon
Si vous passer un chemin du type de fichier connu à l' (fichier) en application de l'explorateur, il " faire la bonne chose', par exemple
et ouvrir le fichier dans le lecteur de PDF.
Mais si vous essayez la même chose avec une URL, par exemple
il tire IE (ce qui n'est pas le navigateur par défaut sur ma machine).
Je sais ne pas répondre à la question, mais je pensais que c'était une intéressante note.
C'est bizarre.. Mon navigateur par défaut est google Chrome et il a ouvert chrome
ShellExecute et Processus.Départ de nice jusqu'à ce que vous avez une URL avec une ancre (#). Ils ne se lancera lorsque transmis ceux qui, même si elle est correctement codé.
Juste une remarque... ce sera pas ouvrez le navigateur par défaut. Il va s'ouvrir avec l'application par défaut définie pour ouvrir les fichiers html, qui peut très bien être un éditeur sur certains Pc, si ils arrivent à faire beaucoup de l'édition de code html.
OriginalL'auteur Unsliced
La façon de déterminer le navigateur par défaut est expliqué dans ce billet de blog:
http://ryanfarley.com/blog/archive/2004/05/16/649.aspx
Le blog post ci-dessus:
Cela ne veut pas obtenir le navigateur web par défaut. Dans mon cas, IE8 est définie comme valeur par défaut et il est allé pour Firefox. Il doit y avoir une meilleure façon de gérer cela.
matthews est correcte, au moins sur Vista, cela renvoie toujours le chemin d'accès à Firefox. Ressemble peut-être HKCU\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice est ce que vous voulez.
OriginalL'auteur adeel825
Ok, je pense avoir trouvé - IApplicationAssociationRegistration::QueryCurrentDefault [1]. Selon les docs c'est ce qui est utilisé par ShellExecute. Je vais poster le code quand je le faire fonctionner, mais je serais intéressé de savoir si d'autres pensent que c'est la bonne chose à utiliser (BTW, je suis Vista ou supérieur pour au niveau de l'OS).
[1]: http://msdn.microsoft.com/en-us/library/bb776336(SV.85).aspx QueryCurrentDefault
OriginalL'auteur Gordon
Ok. Au loin, sur le circuit des conférences pour une semaine, maintenant, pour en revenir à ce. Je peux le faire avec le C++ maintenant - et il semble même se comporter correctement! Mes tentatives de les traduire en C# (ou .NET) ont tous échoué cependant (Post Sur La Question).
Voici le code C++ pour les autres qui trébuchent sur cette question:
Je vais poster le code C# quand j'ai enfin le faire fonctionner!
OriginalL'auteur Gordon
J'ai écrit ce code pour un projet une fois... il garde à l'esprit toutes les autres paramètres définis pour le navigateur par défaut. Il a été créé à l'origine pour ouvrir la documentation HTML dans un navigateur, pour la simple raison que j'ai toujours mis mon programme par défaut pour le code HTML pour un éditeur plutôt que d'un navigateur, et ça me gêne pas de fin pour voir un programme ouvert ses HTML fichier readme dans mon éditeur de texte. Évidemment, il fonctionne parfaitement pour les Url.
OriginalL'auteur Nyerguds
Réponse courte, vous ne pouvez pas.
Si le navigateur par défaut est, disons, Firefox, et l'utilisateur a déjà une instance de Firefox en cours d'exécution, il sera ouvert dans une autre fenêtre ou onglet de la même firefox.exe processus, et même après la fermeture de votre page, le processus ne se termine pas jusqu'à ce qu'ils fermer toutes les fenêtres et tab. Dans ce cas, vous recevrez une notification du processus de sortie de dès que vous avez commencé, en raison de la temporaire firefox.exe proc qui serait le maréchal de l'URL du processus actuel. (En supposant que c'est la façon dont Firefox instance unique de gestion des travaux).
OriginalL'auteur bsneeze