如何在巳開的ie<input type='text' name='a'>內輸入資料呢? |
答題得分者是:wameng
|
jjyeh
一般會員 發表:3 回覆:3 積分:1 註冊:2003-09-30 發送簡訊給我 |
我想使GetSpaces的視窗內輸入一個欄位(如身份證字號)所以希望能寫支程式
並填入指定的<input>之內!!
我從HWND 下手 巳經找到HWND了
可是我要怎麼抓到在網頁上的input 並輸入我要的值呢?? TFm := FindWindow('TForm1', nil);
TPControl := FindWindowEx(TFm,0,'TPageControl',nil);
TTSheet := FindWindowEx(TPControl,0,'TTabSheet',nil);
SEmbedding:=FindWindowEx(TTSheet,0,'Shell Embedding',nil);
SDocObjectView:=FindWindowEx(SEmbedding,0,'Shell DocObject View',nil);
IEServer:=FindWindowEx(SDocObjectView,0,'Internet Explorer_Server',nil);
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
jjyeh您好..
http://course.stut.edu.tw/course/checkin.asp
這是我們學校的網路選課系統..我為了要搶課..就寫了這支程式..
要先USES OleCtrls, SHDocVw, ComCtrls
還要擺一個WebBrowser1
以下是程式片斷..
var Docs, Edits : OleVariant; vFlag, vFrame, vPost, vHeader: OleVariant; begin WebBrowser1.Navigate('http://course.stut.edu.tw/course/checkin.asp'); while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages; Edits:=WebBrowser1.OleObject.Document.all.Item ('stud_no',0); Edits.Value :=stutnum.Text; Edits :=WebBrowser1.OleObject.Document.all.Item ('pass',0); Edits.Value :=stutpass.Text; Edits :=WebBrowser1.OleObject.Document.all.Item ('B1',0); Edits.Click; end;GOOD LUCK |
jjyeh
一般會員 發表:3 回覆:3 積分:1 註冊:2003-09-30 發送簡訊給我 |
|
derekyppp
一般會員 發表:16 回覆:33 積分:9 註冊:2004-02-20 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
您的意思!寫程式對網頁上的表單中輸入匡(EDIT)模擬輸入。
對吧! 用 FindWindow 肯定是不行的!主要他的窗體均是
'Internet Explorer_Server'且無法得到 Child Handle 事實上,IE 本身為 COM 物件。
我們可以透過 SHDocVw_TLB(Import SHDocVw.dll)
可以控制瀏覽器的標題及URL (HTMLDocument接口)
若要替換或輸入網頁的 Form 或Script 並需透過
(MSHTML_TLB Import mshtml.dll/Tlb) 的IHTMLDocument
來處理。 Uses ComObj,SHDocVw_TLB ,MSHTML_TLB; procedure TForm1.Button1Click(Sender: TObject);
var
ShellWindow: IShellWindows;
nCount: integer;
spDisp: IDispatch;
i: integer;
vi: OleVariant;
IE1: IWebBrowser2;
IDoc1: IHTMLDocument2;
begin
ShellWindow := CoShellWindows.Create;
nCount := ShellWindow.Count; for i := 0 to nCount - 1 do
begin
vi := i;
spDisp := ShellWindow.Item(vi);
spDisp.QueryInterface( iWebBrowser2, IE1 );
if IE1 <> nil then
begin
memo1.Lines.Add( 'Location: ' ie1.LocationName );
IE1.Document.QueryInterface(IHTMLDocument2,iDoc1);
if iDoc1 <> nil then
begin
memo1.Lines.add( 'Title: ' IDOC1.Title );
memo1.Lines.add( 'Url: ' IDOC1.url);
end;
end;
end;
end; 以上示範利用來取得所有開啟的瀏覽器的位置及標題。
若要對 Form 表單處理
可以利用 idoc1.forms 試試看!應該不難!
|
jeff377
初階會員 發表:9 回覆:60 積分:33 註冊:2004-08-10 發送簡訊給我 |
|
bdedownload
一般會員 發表:7 回覆:10 積分:3 註冊:2003-05-14 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
引言: HI! 不好意思插花一下.. 我試過 wameng 前輩的方法, 不過對於 framsset 中所開啟的 網站是無法取得正確 url 等資料的.. 導至無法完整搜集目前啟用中的所有聯結 document. 請問應該如何解決這個問題?使用 FramesSet ,當然是不行的。 頁面不同。 可以參考, http://www.cryer.co.uk/brian/delphi/index.htm 原理相同。 PS. 這個問題已經發問很久,已不見發問者參與討論。大概忘了! 發表人 - wameng 於 2004/11/10 11:24:29 |
wewe760109
一般會員 發表:9 回覆:14 積分:4 註冊:2007-06-26 發送簡訊給我 |
===================引 用 geniustom 文 章=================== jjyeh您好.. http://course.stut.edu.tw/course/checkin.asp 這是我們學校的網路選課系統..我為了要搶課..就寫了這支程式.. 要先USES OleCtrls, SHDocVw, ComCtrls 還要擺一個WebBrowser1 以下是程式片斷.. var Docs, Edits : OleVariant; vFlag, vFrame, vPost, vHeader: OleVariant; begin WebBrowser1.Navigate('http://course.stut.edu.tw/course/checkin.asp'); while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages; Edits:=WebBrowser1.OleObject.Document.all.Item ('stud_no',0); Edits.Value :=stutnum.Text; Edits :=WebBrowser1.OleObject.Document.all.Item ('pass',0); Edits.Value :=stutpass.Text; Edits :=WebBrowser1.OleObject.Document.all.Item ('B1',0); Edits.Click; end;GOOD LUCK 這位大大!!! 你的程式碼我試過了 也可以執行!! 但是好像少了一樣功能耶!!! 如何執行後不需要在到網頁上按登入 直接自動登入呢? 其他大大知道的可以教教小弟我嗎~"~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |