c# - Process.Start ("IEXPLORE.EXE") 在启动后立即触发 Exited 事件。为什么?

标签 c# process internet-explorer-8

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

这是示例代码

     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");
    }

但是上面的代码在启动不同的进程(例如:记事本)时完美运行,并且在我关闭 exe 时它会触发退出事件。

这只会在启动 IE 8 时出现问题。有人可以向我说明问题是什么吗??

更新

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

这里是原因

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

谢谢

最佳答案

很可能是您已经将 IE 作为一个进程运行,所以当您尝试将它作为一个新进程再次启动时,它看起来已经有 IE 在运行,告诉它用户启动了一个新窗口(因此初始 IE将创建一个"new"窗口而不是一个新窗口)并退出。

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

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

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

关于c# - Process.Start ("IEXPLORE.EXE") 在启动后立即触发 Exited 事件。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1825105/

相关文章:

c# - 如何在 iTextSharp 中创建目录

linux - 进程 sighandler 可以处理 linux 信号 SIG_KILL 吗?

c++ - 如何使用c++以编程方式从操作系统中的pid获取uid?

javascript - 如何在没有 Web 服务器的情况下使 respond.js 工作

javascript - 另一个 IE8 图像加载问题

c# - 文本框验证是否允许一个“。 ”值C#

c# - IE 将 url 视为下载而不是 HTML 页面

c# - 在 C#/ASP.net 中取消注册一个 javascript block

c# - 如何在 C# 中读取另一个进程的命令行参数?

javascript - jQuery 中的 "null or not an object"错误