天天看點

Delphi WebBrowser Ole 自動登入網站

1. 用WebBrowser控件

Uses SHDocVw, MSHTML;


procedure TForm1.btnLoginClick(Sender: TObject);
var
  UserEdt, UserPwd, LogBtn: IHTMLELEMENT;
begin
  WebBrowser.Navigate(edtUrl.Text);
  while WebBrowser.busy do
  Application.ProcessMessages;
  while WebBrowser.ReadyState <>READYSTATE_COMPLETE do
    Application.ProcessMessages;

  //具體的使用者名,密碼,登入按鈕的名稱,根據登入頁面表單而定
  UserEdt := (WebBrowser.Document as IHTMLDOCUMENT2).all.item('name',emptyParam) as IHTMLELEMENT;
  UserPwd := (WebBrowser.Document as IHTMLDOCUMENT2).all.item('password',emptyParam) as IHTMLELEMENT;
  LogBtn := (WebBrowser.Document as IHTMLDOCUMENT2).all.item('button',emptyParam) as IHTMLELEMENT;


//  UserEdt := (WebBrowser.Document as IHTMLDOCUMENT2).all.item('userid',emptyParam) as IHTMLELEMENT;
//  UserPwd := (WebBrowser.Document as IHTMLDOCUMENT2).all.item('pwd',emptyParam) as IHTMLELEMENT;
//  LogBtn := (WebBrowser.Document as IHTMLDOCUMENT2).all.item('submit',emptyParam) as IHTMLELEMENT;

  UserEdt.setAttribute('value', edtUserName.Text,0);
  UserPwd.setAttribute('value', edtPassword.Text,0);
  LogBtn.Click;
end;
           

2. ole方式

Uses ComObj;

procedure TForm1.Button1Click(Sender: TObject);
begin
  OpenIE(edtUrl.Text);
end;

procedure TForm1.OpenIE(aURL: string);
var
  IE, UserName, Password, BtnLogin: Variant;
//  UserEdt,UserPwd,LogBtn:IHTMLELEMENT;
  WinHanlde : HWnd;
begin
  if( VarIsEmpty(IE) )then
  begin
    IE := CreateOleObject('InternetExplorer.Application');
    IE.Visible := true;  {可見}
    IE.left := 0;
    IE.top := 0;
    IE.height := 1024;   //高度
    IE.width := 768;   //寬度
    IE.menubar := True;   //取消菜單欄
    IE.addressbar := True;   //取消位址欄
    IE.toolbar := True;   //取消工具欄
    IE.statusbar := True;   //取消狀态欄
    IE.resizable := True;   //不允許使用者改變視窗大小
    IE.Navigate(aURL);

    while IE.Busy do
    begin
      Application.ProcessMessages;
    end;

    while IE.ReadyState <> READYSTATE_COMPLETE do
    begin
      Application.ProcessMessages;
    end;
    //具體的使用者名,密碼,登入按鈕的名稱,根據登入頁面表單而定
    UserName := IE.Document.all.item('name');
    Password := IE.Document.all.item('password');
    BtnLogin := IE.Document.all.item('button');

//    UserName := IE.Document.all.item('userid');
//    Password := IE.Document.all.item('pwd');
//    BtnLogin := IE.Document.all.item('submit');

    UserName.setAttribute('innerText', edtUserName.Text);
    Password.setAttribute('innerText', edtPassword.Text);
    BtnLogin.Click;
  end
  else
  begin
    WinHanlde := FindWIndow('IEFrame', nil);
    if (0 <> WinHanlde) then
    begin
      IE.Navigate(aURL);
      SetForegroundWindow(WinHanlde);
    end
    else
      ShowMessage('Can''t open IE !');
  end;


end;
           

3.還有一種方式,使用 IWebBrowser2

procedure TForm1.Button2Click(Sender: TObject);
var
  IE:IWebBrowser2;
  UserEdt, UserPwd, LogBtn: IHTMLELEMENT;
begin
  try
    IE := CreateOleObject('InternetExplorer.Application') as IWebBrowser2;
    IE.Visible := true;   //可見
    IE.left := 0;
    IE.top := 0;
    IE.height := 1024;   //高度
    IE.width := 768;   //寬度
    IE.menubar := True;   //取消菜單欄
    IE.addressbar := True;   //取消位址欄
    IE.toolbar := 0;   //取消工具欄
    IE.statusbar := True;   //取消狀态欄
    IE.resizable := True;   //不允許使用者改變視窗大小
//    IE.FullScreen := True;

    IE.Navigate(edtUrl.Text, EmptyParam,EmptyParam,EmptyParam,EmptyParam);

    while IE.Busy do
    begin
      Application.ProcessMessages;
    end;

    while IE.ReadyState <> READYSTATE_COMPLETE do
    begin
      Application.ProcessMessages;
    end;

    //具體的使用者名,密碼,登入按鈕的名稱,根據登入頁面表單而定
    UserEdt := (IE.Document as IHTMLDOCUMENT2).all.item('name',emptyParam) as IHTMLELEMENT;
    UserPwd := (IE.Document as IHTMLDOCUMENT2).all.item('password',emptyParam) as IHTMLELEMENT;
    LogBtn := (IE.Document as IHTMLDOCUMENT2).all.item('button',emptyParam) as IHTMLELEMENT;

    //具體的使用者名,密碼,登入按鈕的名稱,根據登入頁面表單而定
//    UserEdt := (IE.Document as IHTMLDOCUMENT2).all.item('userid',emptyParam) as IHTMLELEMENT;
//    UserPwd := (IE.Document as IHTMLDOCUMENT2).all.item('pwd',emptyParam) as IHTMLELEMENT;
//    LogBtn := (IE.Document as IHTMLDOCUMENT2).all.item('submit',emptyParam) as IHTMLELEMENT;

    UserEdt.setAttribute('value', edtUserName.Text,0);
    UserPwd.setAttribute('value', edtPassword.Text,0);
    LogBtn.Click;
  except
  end;
end;
           

下載下傳源代碼AutoLoginWeb.rar

繼續閱讀