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

請問如何讀取另一個執行檔畫面上 edit中的值

尚未結案
DEvaYang
一般會員


發表:2
回覆:3
積分:1
註冊:2002-10-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-06 00:41:39 IP:61.56.xxx.xxx 未訂閱
請問各位大大 小弟需要在另一個程式的畫面上的各個edit輸入數字後,在啟動ok button 然後再由某各輸出的EDIT中取出該程式運算完後的值 請問要如何取得該數字ㄋ 貨哪有相關的文件可以閱讀ㄋ
builder78
初階會員


發表:36
回覆:100
積分:47
註冊:2003-02-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-06 03:14:30 IP:211.76.xxx.xxx 未訂閱
找出Edit元件的Handle 然後對Edit元件送出WM_GETTEXT訊息 就可得知Edit的內容~ 試試看ㄅ void __fastcall TForm1::Button1Click(TObject *Sender) { char buf[256]; SendMessage(h,WM_GETTEXT,255,(LPARAM)buf); //假設h為Edit元件Handle Button1->Caption=buf; //buf為Edit元件內容 } ********************************************************* 有系統的知識才是力量
cclin
一般會員


發表:5
回覆:11
積分:8
註冊:2002-11-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-06 10:08:03 IP:139.223.xxx.xxx 未訂閱
那又如何得到 h ? (即 Edit的handle)
builder78
初階會員


發表:36
回覆:100
積分:47
註冊:2003-02-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-06 11:49:18 IP:211.76.xxx.xxx 未訂閱
To cclin: 沒固定的方法~可以利用FindWindow、ChildWindowFromPoint、WindowFromPoint..等API ChildWindowFromPoint用法可參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28659 若兩個AP都是自己寫的則可利用訊息來傳遞資料 ********************************************************* 有系統的知識才是力量
DEvaYang
一般會員


發表:2
回覆:3
積分:1
註冊:2002-10-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-06 23:10:36 IP:61.56.xxx.xxx 未訂閱
引言: 找出Edit元件的Handle 然後對Edit元件送出WM_GETTEXT訊息 就可得知Edit的內容~ 試試看ㄅ void __fastcall TForm1::Button1Click(TObject *Sender) { char buf[256]; SendMessage(h,WM_GETTEXT,255,(LPARAM)buf); //假設h為Edit元件Handle Button1->Caption=buf; //buf為Edit元件內容 } ********************************************************* 有系統的知識才是力量
請教大大 小弟目前只能做到下面的動作 1.取得HWND <== 以findWindow(..... 2.再透過GetClassName(hwnd,... 來取得在該視窗下的所有物件 3.在依物件出現的順序對其作動 以 SendMessage(.... 只會做到 對 buttom class 作 clilk & 對EDIT class傳字串 (我知道依出現的順序對Clase作動是很笨的事,但我只能做到這樣) 但是小弟現在遇到新的問題 1.不知道大大說的取得edit的handle 是如何取得?? 感覺上 應該可以對個別的class作動 而不用每次都要重頭search一次 只是小弟不知如何實現.... 2.你所列的source code是C , 小弟只懂DElPHI (還是個新手 可否代轉譯為delphi 3.但現在小弟遇到個新問題 哪就是在對A程式clilk某個BUTTON後 其會出現另一個新的視窗,糟糕的是該新視窗會取得Facuse造成,原先想對A程式做的連續動作中斷 請問是否有辦法 令其新視窗不會取得Facuse,或是在呼叫A程式時有無啥方法可以強迫其不會取得facuseㄋ???不知有無這樣的方法 因為我是在檔案總管下啟動A程式的 4.在於新開的視窗中CLICK 某個BUTTON.後(此新視窗會關閉)再回到 A程式的視窗中,再取得某個edit中的字串<==為A程式運算後的結果 不知有人有無這方面的經驗 可以分享12的 DEva
builder78
初階會員


發表:36
回覆:100
積分:47
註冊:2003-02-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-07 16:03:33 IP:211.76.xxx.xxx 未訂閱
1.ChildWindowFromPoint這API可以取得某一主視窗下某一控制項的Handle(根據控制項在主視窗上的位置) 參數一為主視窗Handle,也就是FindWindow的傳回值 參數二為 控制項在主視窗Client區域的矩形座標範圍內即可 傳回值為控制項Handle 2.我Pascal不是很熟,下面參考一下,把Edit1.Text換成程式A的Edit控制項Handle procedure TForm1.Button1Click(Sender: TObject); var tmp :String; begin SetLength(tmp,256); SendMessage(Edit1.Handle,WM_GETTEXT,Length(tmp),Integer(PChar(tmp))); Button1.Caption:=tmp; end; 3.4 我幫不上忙~~ 希望其他前輩能解答~~@@ ********************************************************* 有系統的知識才是力量
DEvaYang
一般會員


發表:2
回覆:3
積分:1
註冊:2002-10-01

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-07 21:40:43 IP:61.56.xxx.xxx 未訂閱
感謝builder78 大大 小弟現已可取得EDIT中的字串 現只剩下Focuse的問題了 不知哪位大大 可以幫忙 關於取得EDIT中的字串問題 想再請問builder78 大大 下面的程式碼 以GetWindowText來取得主程式中edit的字串 但為何在由其他程式中的edit取的資料時卻失敗 但卻可以取得BUTTON上的Caption 請問為何會有差異ㄋ??? procedure TMY_Form.Get_winTextClick(Sender: TObject); var FoundWindow: integer; WindowText: array[0..255] of char; begin GetWindowText(Edit1.Handle, WindowText, 255); Label4.Caption:='handle ' IntToStr(FoundWindow) ': ' WindowText; end;
builder78
初階會員


發表:36
回覆:100
積分:47
註冊:2003-02-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-08 02:24:20 IP:211.76.xxx.xxx 未訂閱
對於GetWindowText這個API MSDN文件裡面有下列一段描述 GetWindowText cannot retrieve the text of a control in another application 也就是說GetWindowText這個API無法取得另外其他應用程式Edit元件的 Text內容~~ ********************************************************* 有系統的知識才是力量
DEvaYang
一般會員


發表:2
回覆:3
積分:1
註冊:2002-10-01

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-08 21:53:28 IP:61.56.xxx.xxx 未訂閱
喔 原來如此 小弟已能順利的取得EDIT中的文字了 只剩下將所有的動作串聯在一起了 感謝 builder78 大大 的鼎力相助
系統時間:2024-03-29 22:09:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!