如何由程式開啟 IE 並進行會員登入

如何由程式開啟 IE 並進行會員登入

如何由程式開啟 IE 並填入 [ 帳號 ] / [ 密碼 ] 來進行會員 [ 登入 ]

Yahoo! 奇摩會員登入Sample

<< VB.Net 寫法 >>

' 宣告並建立IE 執行個體物件

Dim ie As Object = CreateObject("InternetExplorer.Application")

' Yahoo!奇摩會員登入網址

Dim strURL As String = "http://tw.login.yahoo.com/cgi-bin/login.cgi?srv=www&from=http://tw.yahoo.com"

With ie

.Visible = True ' 顯示IE

.Navigate(strURL) ' 瀏覽網址

' 等待網頁載入完成

Do While .Busy

Application.DoEvents()

Loop

.Document.All("login").Value = "這裡打帳號" ' 帳號

.Document.All("passwd").Value = "這裡打密碼" ' 密碼

.Document.All("submit").Click() ' 登入

End With

ie = Nothing ' 釋放IE 物件

================================================================

<< C# 寫法 >>

using System.Runtime.InteropServices;

using System.Reflection;

using System.Threading;

// Yahoo!奇摩會員登入網址

string strURL = "http://tw.login.yahoo.com/cgi-bin/login.cgi?srv=www&from=http://tw.yahoo.com";

// Type.GetTypeFromProgID 方法: 取得與指定的程式識別項(ProgID) 關聯的型別;

// InternetExplorer.Application 為M$ IE 的ProgID

Type tp = Type.GetTypeFromProgID("InternetExplorer.Application");

// Activator 成員: 建立物件型別的方法,或者取得對現有遠端物件的參考。

// Activator.CreateInstance 方法(Type) 建構函式: 建立指定型別的執行個體。

object ie = Activator.CreateInstance(tp);

// Type.InvokeMember 方法(String, BindingFlags, Binder, Object, Object[])

// 呼叫IE 物件的Navigate 方法瀏覽網頁

tp.InvokeMember("Navigate", BindingFlags.InvokeMethod, null, ie, new object[] { strURL });

// 呼叫IE 物件的Visible 屬性顯示出IE

tp.InvokeMember("Visible", BindingFlags.SetProperty, null, ie, new object[] { true });

int intWait = 0;

bool blnBusy = false;

int intState = 0;

// 等待IE 瀏覽狀態至Web Page 頁面載入完成

while (true)

{

blnBusy = (bool)tp.InvokeMember("Busy", BindingFlags.GetProperty, null, ie, null);

intState = (int)tp.InvokeMember("ReadyState", BindingFlags.GetProperty, null, ie, null);

if (!blnBusy && (intState == 4)) break;

if (intWait >= 10)

{

return;

}

Thread.Sleep(1000);

intWait++;

}

// 取得IE 物件文件物件模型中的Document 物件

object doc = tp.InvokeMember("document", BindingFlags.GetProperty, null, ie, null);

// 取得IE Doc 物件中All 屬性集合物件(Collection)

object objAll = tp.InvokeMember("all", BindingFlags.GetProperty, null, doc, null);

// 根據Control 名稱取得帳號, 密碼及登入對應之物件

object objLogin = tp.InvokeMember("login", BindingFlags.GetProperty, null, objAll, null);

object objPswd = tp.InvokeMember("passwd", BindingFlags.GetProperty, null, objAll, null);

object objSubmit = tp.InvokeMember("submit", BindingFlags.GetProperty, null, objAll, null);

// 設定帳號, 密碼後登入

tp.InvokeMember("value", BindingFlags.SetProperty, null, objLogin, new object[] { "這裡打帳號" });

tp.InvokeMember("value", BindingFlags.SetProperty, null, objPswd, new object[] { "這裡打密碼" });

tp.InvokeMember("click", BindingFlags.InvokeMethod, null, objSubmit, null);

// Marshal.ReleaseComObject 方法釋放COM 物件

Marshal.ReleaseComObject(ie);

ie = null;