【請問如何實現多個按鈕對應一個webbrower登入???】 |
答題得分者是:darnell
|
andyto202
一般會員 發表:10 回覆:29 積分:7 註冊:2006-12-07 發送簡訊給我 |
|
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
|
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
Hi, 之前有發表了一篇 懶惰鬼自動登入器 - (利用 Delphi 控制網頁的 Demo)
不知道是不是可以解決您的問題呢? ===================引 用 andyto202 文 章=================== 我目前可以用 一個按鈕來自動一個登入網頁 但是 如果我有很多網頁都要做自動登錄(一個按鈕登入一個網頁) 要如何使用同一個webbrower呢 因為 每個網頁的 帳號、密碼 關鍵字 有可能都會不一樣 這樣子 在 procedure TForm1.WebBrowser1DocumentComplete 裡面要怎麼寫呢 麻煩懂的先進指導一下 感恩
------
價值的展現,來自於你用哪一個角度來看待它!! |
andyto202
一般會員 發表:10 回覆:29 積分:7 註冊:2006-12-07 發送簡訊給我 |
有,我有下載來用
但是不知道怎麼使用它說 可以請您說明一下嗎 我是用delphi 5的 我發現那個dpr打不開 而且執行檔執行時 有叫我設定 可是我又看不到設定的按鈕 ===================引 用 careychen 文 章=================== Hi, 之前有發表了一篇 懶惰鬼自動登入器 - (利用 Delphi 控制網頁的 Demo) 不知道是不是可以解決您的問題呢? ===================引 用 andyto202 文 章=================== 我目前可以用 一個按鈕來自動一個登入網頁 但是 如果我有很多網頁都要做自動登錄(一個按鈕登入一個網頁) 要如何使用同一個webbrower呢 因為 每個網頁的 帳號、密碼 關鍵字 有可能都會不一樣 這樣子 在 procedure TForm1.WebBrowser1DocumentComplete 裡面要怎麼寫呢 麻煩懂的先進指導一下 感恩
編輯記錄
andyto202 重新編輯於 2008-11-26 08:48:58, 註解 無‧
|
andyto202
一般會員 發表:10 回覆:29 積分:7 註冊:2006-12-07 發送簡訊給我 |
請問要如何寫判別式
就是不同按鈕下如何使用同一個webbrowser 例如 procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); var docs,edits:OleVariant; begin if WebBrowser1.document = nil then exit; docs:= webbrowser1.document; if not logon then begin edits:=docs.getelementbyid('id'); edits.value:='a'; edits:=docs.getelementbyid('passwd'); edits.value:='b'; docs.getelementbyid('b1').click; // docs.forms.item(0,3).submit; // WebBrowser1.OleObject.Document.GetElementByID('login').Click; logon:=true; end; end; 不管使用多少個按鈕,對應到多少網址 重點是如何將那些按鈕所選的對應到上面 因為不同網址 可能帳號、密碼也不同啊 ===================引 用 darnell 文 章=================== 不太懂你問的意思 有很多網頁要登入? 假設說將每個登入寫成一個案紐 然後設定一個參數看執行到第幾個按鈕 然後再OnDocumentComplete偵測下載完成後再 依據現在執行到第幾個抓下一個 Buttonx.Click這樣不就可以了嗎?
編輯記錄
andyto202 重新編輯於 2008-11-26 08:39:11, 註解 無‧
|
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
careychen大的作品真的很好,是要用D7開的所以你用D5會打不開
用法是要先開IE瀏覽器,然後再開程式,設定按鈕在右下角 寫個簡單的架構讓你參考~如果你要寫不同按鈕只要不同按鈕呼叫 LoginUrl('http://xxxxx.xxxxxx','帳號Control_ID','actxx1','密碼Control_ID','pwdxx1','Submit_ID'); 就可以了變數請自行替換成你的 [code delphi] unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw, MsHtml; type TForm2 = class(TForm) WebBrowser1: TWebBrowser; ListBox1: TListBox; btnStart: TButton; procedure btnStartClick(Sender: TObject); private { Private declarations } procedure LoginUrl(Url,Acc_id,Acc,Pwd_id,Pwd,sub_id:String); public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.btnStartClick(Sender: TObject); begin //登入1號網址 LoginUrl('http://xxxxx.xxxxxx','帳號Control_ID','actxx1','密碼Control_ID','pwdxx1','Submit_ID'); //登入2號網址 LoginUrl('http://xxxxx2.xxxx2','帳號Control_ID','actxx2','密碼Control_ID','pwdxx2','Submit_ID'); end; procedure TForm2.LoginUrl(Url,Acc_id,Acc,Pwd_id,Pwd,sub_id:String); var docs,edits:OleVariant; begin WebBrowser1.Navigate(Url); while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages; try docs:= webbrowser1.document; edits:=docs.getelementbyid(Acc_id); edits.value:=Acc; edits:=docs.getelementbyid(Pwd_id); edits.value:=Pwd; docs.getelementbyid(sub_id).click; except on E:Exception do begin ListBox1.Items.Add('登入失敗:' Url); //用來顯示登入情況的控制項ListBox1 end; end;//try while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages; //檢查是否成功的程式碼請自行加入 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ListBox1.Items.Add('登入成功:' Url); //用來顯示登入情況的控制項ListBox1 end; [/code] |
andyto202
一般會員 發表:10 回覆:29 積分:7 註冊:2006-12-07 發送簡訊給我 |
太厲害了
三、兩下就解決我的問題 再次向您道謝 ===================引 用 darnell 文 章=================== careychen大的作品真的很好,是要用D7開的所以你用D5會打不開 用法是要先開IE瀏覽器,然後再開程式,設定按鈕在右下角 寫個簡單的架構讓你參考~如果你要寫不同按鈕只要不同按鈕呼叫 LoginUrl('http://xxxxx.xxxxxx','帳號Control_ID','actxx1','密碼Control_ID','pwdxx1','Submit_ID'); 就可以了變數請自行替換成你的 [code delphi] unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw, MsHtml; type TForm2 = class(TForm) WebBrowser1: TWebBrowser; ListBox1: TListBox; btnStart: TButton; procedure btnStartClick(Sender: TObject); private { Private declarations } procedure LoginUrl(Url,Acc_id,Acc,Pwd_id,Pwd,sub_id:String); public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.btnStartClick(Sender: TObject); begin //登入1號網址 LoginUrl('http://xxxxx.xxxxxx','帳號Control_ID','actxx1','密碼Control_ID','pwdxx1','Submit_ID'); //登入2號網址 LoginUrl('http://xxxxx2.xxxx2','帳號Control_ID','actxx2','密碼Control_ID','pwdxx2','Submit_ID'); end; procedure TForm2.LoginUrl(Url,Acc_id,Acc,Pwd_id,Pwd,sub_id:String); var docs,edits:OleVariant; begin WebBrowser1.Navigate(Url); while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages; try docs:= webbrowser1.document; edits:=docs.getelementbyid(Acc_id); edits.value:=Acc; edits:=docs.getelementbyid(Pwd_id); edits.value:=Pwd; docs.getelementbyid(sub_id).click; except on E:Exception do begin ListBox1.Items.Add('登入失敗:' Url); //用來顯示登入情況的控制項ListBox1 end; end;//try while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages; //檢查是否成功的程式碼請自行加入 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ListBox1.Items.Add('登入成功:' Url); //用來顯示登入情況的控制項ListBox1 end; [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |