線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3286
推到 Plurk!
推到 Facebook!

如何在巳開的ie<input type='text' name='a'>內輸入資料呢?

答題得分者是:wameng
jjyeh
一般會員


發表:3
回覆:3
積分:1
註冊:2003-09-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-09 22:10:12 IP:210.244.xxx.xxx 未訂閱
我想使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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-10 17:52:04 IP:219.68.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-12 22:51:51 IP:210.244.xxx.xxx 未訂閱
可是我想要的方式是直接能輸入到ie上的input 不是使用TWebBrowser元件 所以我才會想是不是該由hwnd來下手!!! 順便一問!如果有個程式也是用delphi寫的~能直接控制它的元件嗎(編譯過)?? 還是要從win32api下手??
derekyppp
一般會員


發表:16
回覆:33
積分:9
註冊:2004-02-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-28 12:50:45 IP:61.216.xxx.xxx 未訂閱
Edits 是 Tedit 這個元件嗎 我怎麼找不到 Edits.Click 這個方法?? 還有什麼要把值傳到Edits裡面呢? 我們不是把把資料傳『出去』到網頁上嗎
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-28 15:09:48 IP:61.31.xxx.xxx 未訂閱
您的意思!寫程式對網頁上的表單中輸入匡(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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-09-30 17:37:04 IP:61.66.xxx.xxx 未訂閱
引言: Edits 是 Tedit 這個元件嗎 我怎麼找不到 Edits.Click 這個方法?? 還有什麼要把值傳到Edits裡面呢? 我們不是把把資料傳『出去』到網頁上嗎
Edits並非TEdit元件,它是TWebBrowser中的HTMLInputElement界面,而範例中宣告為OleVariant所以你在編碼時找不到click方法。
bdedownload
一般會員


發表:7
回覆:10
積分:3
註冊:2003-05-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-10 08:40:11 IP:140.127.xxx.xxx 未訂閱
HI! 不好意思插花一下.. 我試過 wameng 前輩的方法, 不過對於 framsset 中所開啟的 網站是無法取得正確 url 等資料的.. 導至無法完整搜集目前啟用中的所有聯結 document. 請問應該如何解決這個問題?
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-11-10 11:20:22 IP:61.31.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-07-10 11:30:57 IP:125.231.xxx.xxx 訂閱

===================引 用 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

這位大大!!! 你的程式碼我試過了 也可以執行!! 但是好像少了一樣功能耶!!!
如何執行後不需要在到網頁上按登入 直接自動登入呢?
其他大大知道的可以教教小弟我嗎~"~
系統時間:2024-04-28 8:55:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!