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

How to 模擬按下Yes

尚未結案
hcker
中階會員


發表:95
回覆:118
積分:62
註冊:2003-02-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-05 10:46:14 IP:219.129.xxx.xxx 未訂閱
有一個檔再雙擊後會彈出一個對話方塊,提示你是否繼續操作,現在我知道 它的classname:是#32771裏面有一個 (y) 和 (no) 我如何寫個程式判斷這個視窗存在,然後自動按下yes? Thx! 我現在能find 到這個視窗,可是不知道如何去 自動按下這個yes. objecthandle:=findwindow(pchar('#32771'),nil); if objecthandle<>0 then begin //? end; ----------要知道自己有多笨,到DelphiK.Top來看看----------
kkccgg
初階會員


發表:50
回覆:54
積分:30
註冊:2002-07-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-05 11:27:42 IP:202.145.xxx.xxx 未訂閱
可以參考這份程式,裡面有你要的功能,只不過你要試一下,這份真的不錯我也有拿來應用過喔 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30743
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-05 12:31:29 IP:218.163.xxx.xxx 未訂閱
hcker 你好:    嗯...上述文章很完整... 不過...既然準備了...貼上來參考參考. < class="code"> type TWinFinder = record wClassName: string; Title: string; WHandle: HWnd; FoundWindow: Boolean; end; function WindowTesterByCaption(wnd: HWnd; var Info: TWinFinder): Bool; stdcall var Buf: array [Byte] of Char; WText : string; begin GetWindowText(wnd, Buf, sizeof(Buf)); WText := string(Buf); Result := True; if pos(Info.Title, WText)=1 then begin Info.WHandle:= Wnd; Info.FoundWindow:=True; Result := False; end; end; var ChildWin:TWinFinder; begin ... objecthandle:=findwindow(pchar('#32771'),nil); if objecthandle<>0 then begin ChildWin.Title:='y'; ChildWin.FoundWindow := False; EnumChildWindows(objecthandle,@WindowTesterByCaption, Integer(@ChildWin)); if ChildWin.FoundWindow then begin BringWindowToTop(objecthandle); //使其成為Topwindow // 模擬 MouseClick PostMessage(ChildWin.WHandle,WM_LBUTTONDOWN,0,0); sleep(100); PostMessage(ChildWin.WHandle,WM_LBUTTONUP,0,0); end; end; end;
hcker
中階會員


發表:95
回覆:118
積分:62
註冊:2003-02-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-05 15:44:36 IP:219.129.xxx.xxx 未訂閱
謝謝大大,但是這個 yes 該如何寫呢?     ----------要知道自己有多笨,到DelphiK.Top來看看----------
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-05 16:16:11 IP:218.163.xxx.xxx 未訂閱
他的 Caption 應該不是 "是(Y)".... 1. Trace 看看 WText 有哪些, 應該是哪個才對. 2. ChildWin.Title := '是'; 試試看.
kkccgg
初階會員


發表:50
回覆:54
積分:30
註冊:2002-07-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-05 16:25:20 IP:202.145.xxx.xxx 未訂閱
我的做法是將每個handle內文字紀錄到一字串陣列中 然後藉由pos去找到該handle後下指令 // 取得handle文字內容 SendMessage(hwnd, WM_GETTEXT, 1024, long(&str[0])); s2[i]=AnsiString(str); if (AnsiString(s2[i1]).Pos("是(")>0) { Memo2->Lines->Add(s1[i1]); ComboBox2->ItemIndex=i1; try{ SendMessage(ComboBox2->Items->Objects[ComboBox2->ItemIndex], BM_CLICK, 0, 0); i2=Test_Num 1; break; } catch (...) { } }
系統時間:2024-05-22 1:17:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!