請問如何讀取另一個執行檔畫面上 edit中的值 |
尚未結案
|
DEvaYang
一般會員 ![]() ![]() 發表:2 回覆:3 積分:1 註冊:2002-10-01 發送簡訊給我 |
|
builder78
初階會員 ![]() ![]() 發表:36 回覆:100 積分:47 註冊:2003-02-03 發送簡訊給我 |
找出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 發送簡訊給我 |
|
builder78
初階會員 ![]() ![]() 發表:36 回覆:100 積分:47 註冊:2003-02-03 發送簡訊給我 |
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 發送簡訊給我 |
引言: 找出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 發送簡訊給我 |
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 發送簡訊給我 |
感謝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 發送簡訊給我 |
|
DEvaYang
一般會員 ![]() ![]() 發表:2 回覆:3 積分:1 註冊:2002-10-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |