全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5179
推到 Plurk!
推到 Facebook!

在WebBrowser裡填寫表單的問題

答題得分者是:chiehmin
00156
高階會員


發表:45
回覆:195
積分:112
註冊:2002-06-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-15 09:56:09 IP:61.56.xxx.xxx 未訂閱
我用WebBrowser來開啟並登入hotmail:
var Doc,WForm:OleVariant;
WebBrowser1.Navigate('http://www.hotmail.com');
...
Doc:=WebBrowser1.OleObject.Document;
WForm:=Doc.Forms.Item('form1');
WForm.Item('login',0).value:='my_account@hotmail.com';
WForm.Item('passwd',0).value:='my_password';
可是,若將紅色的部份改用變數代入,執行時就會出錯,例如:
var FormName:string;
FormName:='form1';
...
WForm:=Doc.Forms.Item(FormName);
...
不知為何?請問要如何修正才能讓這些參數以變數代入?
chiehmin
高階會員


發表:13
回覆:134
積分:134
註冊:2002-05-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-15 21:00:42 IP:211.75.xxx.xxx 未訂閱
  private
    { Private declarations }
    ok: Byte;    .......        procedure TForm1.Button1Click(Sender: TObject);
begin
  ok := 0;
  WebBrowser1.Navigate('http://www.hotmail.com/');
  Repeat
    Application.ProcessMessages;
  Until ok = 2;      ShowMessage('登入完成');
end;    procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  Docs, Edits: OleVariant;
begin
  Case ok of      0:
  begin
    If Pos('uilogin', AnsiLowerCase((Sender As TWebBrowser).LocationURL)) > 0 then
    begin
      Docs := (Sender As TWebBrowser).OleObject.Document;
      Edits := Docs.Forms.item('form1', 0).all.Item('login', 0);
      Edits.Value := Id.Text;
      Edits := Docs.Forms.item('form1', 0).all.Item('passwd', 0);
      Edits.Value := Password.Text;          Docs.Forms.item('form1', 0).submit;          ok := 1;
    end;
  end;
  1:
  begin
    If Pos('hmhome', AnsiLowerCase((Sender As TWebBrowser).LocationURL)) > 0 then ok := 2;
  end;      end;
end;
00156
高階會員


發表:45
回覆:195
積分:112
註冊:2002-06-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-15 21:55:58 IP:61.56.xxx.xxx 未訂閱
chiehmin,您好: 謝謝你提供確保登入網頁的方法。不過,我是希望能用在hotmail以外的網站,也就是'form1''login'以及'passwd'這些表單ID能依照登錄網頁的不同而改變。可是Doc.Forms.Item('form1')...一旦將'form1'以一個變數取代,就會出錯(其他兩個表單ID也一樣)。不知道有沒有解決方法?
chiehmin
高階會員


發表:13
回覆:134
積分:134
註冊:2002-05-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-15 22:48:44 IP:211.76.xxx.xxx 未訂閱
變數要記得宣告為OleVariant 如
var
  param1: OleVariant;
begin
  param1 := 'form1';
....
  Edits := Docs.Forms.item(param1, 0).all.Item('login', 0);
....
....
引言: chiehmin,您好: 謝謝你提供確保登入網頁的方法。不過,我是希望能用在hotmail以外的網站,也就是'form1''login'以及'passwd'這些表單ID能依照登錄網頁的不同而改變。可是Doc.Forms.Item('form1')...一旦將'form1'以一個變數取代,就會出錯(其他兩個表單ID也一樣)。不知道有沒有解決方法?
系統時間:2024-05-06 20:38:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!