C# 操作外部Internet Explorer瀏覽器

ny8p 9年前發布 | 841 次閱讀 C#

    private void Form1_Load(object sender, EventArgs e)
{
object ppvComObject = null;
try
{
Guid CLSID_ShellWindows = new Guid("9BA05972-F6A8-11CF-A442-00A0C90A8F39");

        Type pComType = Type.GetTypeFromCLSID(CLSID_ShellWindows, true);  
        ppvComObject = Activator.CreateInstance(pComType);  

        int webCount;  
        if ((webCount = (int)pComType.InvokeMember("Count", BindingFlags.GetProperty, null, ppvComObject, null)) > 0)  
        {  
            for (int i = 0; i < webCount; i++)  
            {  
                object webObject = pComType.InvokeMember("Item",  // IWebBrowser  
                    BindingFlags.InvokeMethod, null, ppvComObject, new object[] { i });  

                webObject.GetType().InvokeMember("Navigate",   
                    BindingFlags.InvokeMethod, null, webObject, new object[] { "http://blog.csdn.net/u012395622" });  
            }  
        }  
    }  
    finally  
    {  
        if (ppvComObject != null && Marshal.IsComObject(ppvComObject))  
            Marshal.ReleaseComObject(ppvComObject);  
    }  
}  </pre> 


首先Type.GetTypeFromCLSID獲取到COM對象的NET包裝類型

然后再通過Activator.CreateInstance創建它的對象包裝實例(System.__ComObject)

然后我們在通過Type.InvokeMember去調用它的方法/屬性 整體是比較簡單的

實際上這只是CLR中一種較為簡單的反射機制的應用,但不能調用未注冊的類型庫。

 本文由用戶 ny8p 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!