第一章介紹了如何打開網站,這一章介紹一下使用IHTMLDocument3完成登錄博客園,以下為代碼:
SHDocVw.InternetExplorer oBrowser = new SHDocVw.InternetExplorer(); object objFlags = 2; object objTargetFrameName = "_self"; object objPostData = ""; object objHeaders = ""; oBrowser.Visible = true; oBrowser.Navigate("https://passport.cnblogs.com/user/signin", ref objFlags, ref objTargetFrameName, ref objPostData, ref objHeaders); while (true) { Thread.Sleep(1000); if (oBrowser.ReadyState == SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE) break; } IHTMLDocument3 doc3 = (IHTMLDocument3)oBrowser.Document; IHTMLInputElement txtUserName = (IHTMLInputElement)doc3.getElementById("input1"); txtUserName.value = "你的用戶名"; IHTMLInputElement txtPassWord = (IHTMLInputElement)doc3.getElementById("input2"); txtPassWord.value = "你的密碼"; doc3.getElementById("signin").click();
使用以上代碼就成功登錄到博客園了,下面整理一下IHTMLDocument3以及相關的一些方法和屬性:
| IHTMLDocument3 方法 | 說明 |
| attachEvent | 從IE11開始,使用addEventListener。將指定的函數綁定到一個事件,以便每當事件在對象上觸發時,該函數被調用。 |
| createDocumentFragment | 創建一個新文檔並返回一個指向新創建的文檔的指針。 |
| createTextNode | 從指定的值創建一個文本字符串。 |
| detachEvent | 從事件中取消綁定指定的功能,以使該功能在事件觸發時停止接收通知。 |
| getElementById | 返回對具有指定值id屬性的第一個對象的引用。 |
| getElementsByName | 根據name屬性的值獲取對象集合。 |
| getElementsByTagName | 根據指定的元素名稱檢索對象的集合。 |
| recalc | 此元素已過時,不再使用。重新計算當前文檔中的所有動態屬性。 |
| releaseCapture | 從當前文檔中的對象中刪除鼠標捕獲。 |
| IHTMLDocument3屬性與事件 | 說明 |
| baseUrl | |
| dir | 設置或檢索指示對象的讀取順序的值。 |
| documentElement | 獲取對文檔根節點的引用。 |
| enableDownload | 設置啟用下載 |
| inheritStyleSheets | 暫未說明 |
| onbeforeeditfocus | 設置焦點之前 |
| oncellchange | 當數據來源發生變化時 |
| oncontextmenu | 當按下鼠標右鍵出現菜單或通過鍵盤觸發頁面菜單時 |
| onpropertychange | 改變屬性時 |
| onrowsdelete | 當前數據記錄被刪除時 |
| onrowsinserted | 當前數據源將要插入新數據時 |
| uniqueID | 檢索對象的自動生成的唯一標識符。 |
| onstop | 停止或離開時 |
| ondatasetchanged | 數據源發生變化時 |
| ondatasetcomplete | 當數據接收完成時 |
| ondataavailable | 當數據源的全部有效數據讀取完畢時 |
