Process.Start ("IEXPLORE.EXE") déclenche immédiatement l'événement Exited après le lancement. Pourquoi?
j'ai un étrange problème avec IE8, installé sous xp. j'ai essayé de lancer IE à l'aide d'un Système.Diagnostics.Processus.Méthode de démarrage en c#. Et j'ai une obligation de piège quitté le cas de l'IE et de faire un peu le fonctionnement. Mais je me suis retrouvé dans un problème assez étrange où l'IE immédiatement les feux de la sorti de l'événement après le lancement.
c'est l'exemple de code
Process objProcess = Process.Start("IEXPLORE.EXE", "http://google.com");
if (objProcess != null)
{
objProcess.EnableRaisingEvents = true;
objProcess.Exited += new EventHandler(myProcess_Exited);
}
public static void myProcess_Exited(object sender, System.EventArgs e)
{
MessageBox.Show("You exited");
}
Mais le code ci-dessus fonctionne parfaitement lorsque laucnching différents processus (ex:notepad) et il déclenche l'événement de sortie lorsque je ferme le fichier exe.
cela ne donne que des problème de lancement d'IE 8. Quelqu'un peut-il me préciser quel est le problème??
Mise à JOUR
La plupart de mes amis ont répondu à mon post et dire pourquoi vous ne pouvez pas utiliser une URL? pourquoi le bâton avec IE?
voici la raison
le but ultime de l'application est de lancer une URL à partir de l'application windows et permet de masquer un fichier exe lorsque l'on travaille sur l'IE. Et de montrer l'exe après la fermeture de l'IE.
Grâce
source d'informationauteur RameshVel
Vous devez vous connecter pour publier un commentaire.
Plus probablement, c'est que vous avez c'est à dire déjà exécute en tant que processus, de sorte que lorsque vous essayez de lancer à nouveau comme un nouveau processus, il semble qu'il y a IE fonctionne déjà, qu'il indique que l'utilisateur a lancé une nouvelle fenêtre (donc la première IE va créer une "nouvelle" fenêtre plutôt que d'un nouveau) et de sortie.
Solution Possible:
essayez de démarrer le processus avec "-nomerge" option de ligne de commande:
Observation intéressante:
objProcess.ExitCode
(pour IE8 au moins) sera égale à0
sortie de contrôle de transmission à une autre instance, et1
si elle a effectivement été fermé par l'utilisateur.Si une autre instance de iexplore.exe est déjà en cours d'exécution sur la machine, de nouvelles instances de connecter et de quitter immédiatement. Aussi, il est possible que, même dans le cas où iexplore n'est pas en cours d'exécution, le multi process architecture d'Internet Explorer 8 est le parent de lancement de l'enfant processus de courtier et le quitter immédiatement.
Mais ces réponses sont à côté du sujet. Vous ne devriez pas être le lancement d'Internet Explorer directement. Si l'utilisateur a configuré un autre navigateur par défaut, ils seront malheureux que vous êtes ignorant leurs préférences. Au lieu de cela, pourquoi n'essayez-vous pas
directement et qui va faire la bonne chose. Vous ne serez pas en mesure de dire quand le navigateur fermé, mais si la commande a ouvert un nouvel onglet dans une session de navigateur (par exemple, la fermeture du navigateur de l'événement sera vide de sens à votre demande.
Peut-être IEXPLORE lance lui-même un processus différent de l'URL et termine le processus que vous avez créé? Comme un
fork
sur Unix?