示範如何使用操控 IE 送出 Post Data |
|
shaofu
高階會員 發表:5 回覆:136 積分:103 註冊:2003-01-07 發送簡訊給我 |
相關說明請看原始檔..
範例是用 Delphi 呼叫 IE 登入 K.Top 發表人 -
|
shaofu
高階會員 發表:5 回覆:136 積分:103 註冊:2003-01-07 發送簡訊給我 |
原始碼如下:
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw, ActiveX, OleServer; type TForm1 = class(TForm) Edit2: TEdit; Edit3: TEdit; Label2: TLabel; Label3: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} // 把 Post Dtat (String) 轉成 IE 所需要的格式 VarArray function StringToPostData(const Value: string): OleVariant; begin Result := Unassigned; if Value <> '' then begin Result := VarArrayCreate([0, Length(Value) - 1], varByte); Move(Pointer(Value)^, VarArrayLock(Result)^, Length(Value)); VarArrayUnlock(Result); end; end; // 示範如何使用操控 IE Post Data procedure TForm1.Button1Click(Sender: TObject); var IE: TInternetExplorer; vFlag, vFrame, vPost, vHeader: OleVariant; begin CoInitialize(nil); IE := TInternetExplorer.Create(nil); try // 開啟新的 IE 並顯示 IE.Visible := true; vFlag := navOpenInNewWindow; // Post String, 請依需求修改, 以下是 Delphi K.Top Login 用的 :P vPost := StringToPostData(Format('Method_Type=login&Name=%s&Password=%s', [Edit2.Text, Edit3.Text])); // Post 的資料是加在 Http-Header 後方[/red] // 在 Http-Header 處要多加 Content-Type 做解釋 (不需要修改) vHeader := 'Content-Type: application/x-www-form-urlencoded' #10#13; // 使用 Navigate 連接到所要的 URL, 請依需求修改 IE.Navigate('http://delphi.ktop.com.tw/default.asp', vFlag, vFrame, vPost, vHeader); finally IE.Free; CoUnInitialize; end; end; end.發表人 - shaofu 於 2003/06/09 15:00:52 |
starks
一般會員 發表:2 回覆:13 積分:3 註冊:2003-04-12 發送簡訊給我 |
|
shaofu
高階會員 發表:5 回覆:136 積分:103 註冊:2003-01-07 發送簡訊給我 |
引言: 請問我輸入了ID,PASSWD之後,他出現"不支援此種介面",這是為什麼呢 os:win2k , ie5.0 我是直接執行執行檔嗯, 我是直接拿 Delphi 做好的 WebBrowser 來使用, 或許某些細節我沒有注意到, 可以麻煩你做一下測試嗎 ? 1. 用 Delphi 開啟專案, 單步執行測試, 看是那邊出問題 O.o? 2. 如果可能的話, 使用 Delphi 提供的 Import ActiveX Control 來試看看 3. 有一樣問題的, 也可幫忙測試看看喔 (讓我偷懶一下吧:p) PS1: 參考網址 http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/browser_control_node_entry.asp PS2: 由上面的資訊, 應該是 IE4.0 以上版本就能使用 |
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
犯得著這麼辛苦控制IE BROWSER嗎?小弟用了另外的方法來處理POST的事情,還蠻好用的!這個ASP是用來回傳使用者資料用的,做成XML,方便CLIENTDATASET讀取使用
var vid,vpass:string ; xstr : tStringList; resp : TstringList ; begin if passform.showmodal=mrok then begin xstr:=TStringList.Create; resp:=TSTringList.create; xstr.add('id=' Passform.edit1.text); xstr.add('pass=' Passform.edit2.text); resp.text:=(idHttp1.Post('http://10.10.1.8/cfnav/index.asp',xstr)); resp.SaveToFile('temp.xml'); |
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 犯得著這麼辛苦控制IE BROWSER嗎?小弟用了另外的方法來處理POST的事情,還蠻好用的!這個ASP是用來回傳使用者資料用的,做成XML,方便CLIENTDATASET讀取使用這個方法好簡潔喔 感謝分享 ~~~Delphi K.Top討論區站長~~~var vid,vpass:string ; xstr : tStringList; resp : TstringList ; begin if passform.showmodal=mrok then begin xstr:=TStringList.Create; resp:=TSTringList.create; xstr.add('id=' Passform.edit1.text); xstr.add('pass=' Passform.edit2.text); resp.text:=(idHttp1.Post('http://10.10.1.8/cfnav/index.asp',xstr)); resp.SaveToFile('temp.xml');
------
~~~Delphi K.Top討論區站長~~~ |
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |