C# · 12月 27, 2021

c# – Process.Start(“IEXPLORE.EXE”)在启动后立即启动Exited事件.为什么?

我有一个奇怪的问题,IE8安装在xp.我试图在c#中使用System.Diagnostics.Process.Start方法启动IE.我有一个要求来捕获IE的退出事件,并进行一些操作.但是,我终于遇到了一个相当奇怪的问题,IE在启动后立即启动了退出的事件.

这是示例代码

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) { Message@R_121_2419@.Show(“You exited”); }

但是,上面的代码完美的工作,当熟练的不同的过程(例如:记事本),它触发退出事件,当我关闭的exe.

这只会给IE 8发布问题.有人可以澄清一下我有什么问题吗?

UPDATE

大多数朋友回复了我的帖子,并说为什么你不能只使用一个URL?为什么坚持使用IE?

这里的原因

该应用程序的最终目的是从Windows应用程序启动一个URL,并在IE上工作时隐藏一个exe.并关闭IE后显示exe.

谢谢

解决方法 最有可能的是,您已经将IE作为一个进程运行了,所以当您尝试以新进程再次启动它时,它看起来已经有IE运行,告诉用户发起了一个新的窗口(所以初始的IE将创建一个“新”窗口而不是新窗口)并退出.

可能解决方案
尝试使用“-nomerge”命令行选项启动该过程:

Process objProcess = Process.Start(“IEXPLORE.EXE”,”-nomerge http://google.com/”);

有趣的观察:objProcess.ExitCode(对于IE8至少)将等于0,如果退出传递给另一个实例,如果实际上被用户关闭,则为1.