早些天,因項目需要做了一個自動登陸網站的ActiveX插件。主要功能就是通過這個插件啟動一個IE實 例或者使用插件所在的浏覽器,
打一個網站(即通過Navigate導航),通過IHTMLDocument2接口找到相關元素,並填入相應的值,最後 模擬點擊登陸按鈕,完成登陸。這種
方法簡單,而且理論上屬於模擬人工登陸,受限性比較小。但是它有一個缺點,就是有打開登陸頁面 ,填入值的過程,沒有直接進入登陸
後的頁面看上去更自然。
再次查看MSDN,IWebBrowser2::Navigate聲明:
HRESULT Navigate( BSTR url, VARIANT *Flags, VARIANT *TargetFrameName, VARIANT *PostData, VARIANT *Headers );
第四個參數是PostData,那是否可以附帶PostData數據直接登陸進去呢?向下看
PostData:
[in] Pointer to data to send with the HTTP POST transaction. For example, the POST transaction is used to send data gathered
by an HTML form. If this parameter does not specify any post data, IWebBrowser2::Navigate issues an HTTP GET transaction.
意思是說在這裡指定PostData參數與通過 HTML form提交是一樣的。當然是可行了。
這個參數的類型是VARIANT,MSDN:
The post data specified by PostData is passed as a SAFEARRAY Data Type structure. The VARIANT should be of type VT_ARRAY and point
to a SAFEARRAY Data Type. The SAFEARRAY Data Type should be of element type VT_UI1, dimension one, and have an element count equal
to the number of bytes of post data.