C#获得IE进程内的IDocument对象代码
class Win32API { [DllImport("user32", EntryPoint = "RegisterWindowMessage")] public static extern int RegisterWindowMessage( string lpString ); [DllImport("user32", EntryPoint = "SendMessage")] public static extern int SendMessage( int hwnd, int wMsg, int wParam, ref int lParam ); [DllImport("OLEACC.DLL", EntryPoint = "ObjectFromLresult")] public static extern int ObjectFromLresult( int lResult, ref System.Guid riid, int wParam, [System.Runtime.InteropServices.MarshalAs(UnmanagedType.Interface),System.Runtime.InteropServices.In, System.Runtime.InteropServices.Out]ref System.Object ppvObject //注意这个函数ObjectFromLresult的声明. ); public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { System.Object domObject = new System.Object(); int tempInt=0; System.Guid guidIEDocument2 = new Guid(); //应该是IHTMLDocument2的接口id int WM_Html_GETOBJECT = Win32API.RegisterWindowMessage("WM_Html_GETOBJECT"); //开始查找指定的ie窗体 int hwnd = 0x30784; //IExplorer server的句柄,在实际运行中需要用findwind得到 int W = Win32API.SendMessage(hwnd, WM_Html_GETOBJECT, 0, ref tempInt); int lreturn = Win32API.ObjectFromLresult(W, ref guidIEDocument2, 0, ref domObject); mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)domObject; } }