如何使用c#连接到Internet Explorer的打开窗口?

时间:2010-07-19 23:03:30

标签: c# internet-explorer com ole

您可以在C#程序中使用COM / OLE连接到正在运行的Internet Explorer实例吗?

理想情况下,我想在IE中找到所有网页的网址。

2 个答案:

答案 0 :(得分:3)

我找到了答案here,代码摘录是:

public class Form1 : System.Windows.Forms.Form
{
    static private SHDocVw.ShellWindows shellWindows = new
    SHDocVw.ShellWindowsClass();

    public Form1()
    {
       InitializeComponent();    
       foreach(SHDocVw.InternetExplorer ie in shellWindows)
       {
           MessageBox.Show("ie.Location:" + ie.LocationURL);
           ie.BeforeNavigate2 += new
           SHDocVw.DWebBrowserEvents2_BeforeNavigate2EventHandler(this.ie_BeforeNavigate2);
       }
}

 public void ie_BeforeNavigate2(object pDisp , ref object url, ref object Flags, ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)
 {
  MessageBox.Show("event received!");
 } 
}

任何人都知道该网页上的代码是否也适用于IE 6?我在7上测试了它。谢谢!

答案 1 :(得分:1)

Manisha Mehta在http://www.codeproject.com/KB/cs/runninginstanceie.aspx上展示了如何做到这一点。