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

【Delphi】【問題】如何偵測Windows MessageBox

尚未結案
chiaseng
一般會員


發表:2
回覆:11
積分:2
註冊:2003-02-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-17 17:07:43 IP:163.28.xxx.xxx 未訂閱
大家好,我之前有問過用Delphi外部呼叫Lindo的DLL檔求解問題, 該部分已經解決,不過目前面臨一個新的問題, 就是呼叫完並求解後,Lindo都會自動跑出一個Windows的MessageBox視窗, 問說要不要進行敏感度分析,所以想請問大家, Delphi有沒有函式能偵測Windows的MessageBox視窗, 然後再下指令讓它選要或不要。 感謝~ QQ
SKYSTAR
中階會員


發表:76
回覆:198
積分:64
註冊:2002-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-17 17:39:36 IP:210.66.xxx.xxx 未訂閱
不好意思...佔用您的版面一下下...別生氣喲!! 我也是想要請教一下.... 像一大堆
cmj
高階會員


發表:15
回覆:242
積分:226
註冊:2002-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-18 23:21:13 IP:211.76.xxx.xxx 未訂閱
call外部dll或exe檔,出現外部視窗,視窗中可能有button,edit的元件 要控制過這些元件與視窗,就要取得視窗的handle,視窗內button,edit的handle 再送Window的Message去控制,這些要使用windows api來達到控制,可以查詢windows單元.
chiaseng
一般會員


發表:2
回覆:11
積分:2
註冊:2003-02-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-22 01:10:50 IP:163.28.xxx.xxx 未訂閱
對不起, 我不太知道要怎麼查詢windows單元, 是在Delphi中的Help裡面有嗎? 大概是什麼主題呢?
cmj
高階會員


發表:15
回覆:242
積分:226
註冊:2002-06-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-22 15:39:58 IP:211.76.xxx.xxx 未訂閱
windows單元在 delphi5 C:\Program Files\Borland\Delphi5\Source\Rtl\Win\Windows.pas delphi6 C:\Program Files\Borland\Delphi6\Source\Rtl\Win\Windows.pas delphi7 C:\Program Files\Borland\Delphi7\Source\Rtl\Win\Windows.pas 定義delphi如何windows api help可查詢 delphi之help下之MS SDK Help Files 如何查詢可以在delphi內Open windows.pas以CTRL F鍵打入關鍵字查詢 windows api之用途可以參考一些windows api之書籍,delphi也有此方面的書可到天瓏書局找
chiaseng
一般會員


發表:2
回覆:11
積分:2
註冊:2003-02-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-01 14:59:43 IP:163.28.xxx.xxx 未訂閱
cmj您好,謝謝您的回答, 想再請問一下, call外部dll或exe檔,出現外部視窗,視窗中可能有button,edit的元件, 視窗的handle,視窗內button,edit的handle是什麼意思呢, 我要如何取得呢?
chiaseng
一般會員


發表:2
回覆:11
積分:2
註冊:2003-02-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-01 19:19:27 IP:163.28.xxx.xxx 未訂閱
請問一下各位大大, 我去查了一下所有WinAPI所提供的函式, 裡面有偵測跳出視窗的Anypopup(), 然後好像也可以虛擬按下Enter鍵, 不知道我的問題是否可用這個方式來解決? (先偵測有跳出對話框後再自動按下Enter鍵) 如果可行的話,程式碼大概是要怎麼寫呢? (因為還不太懂怎麼用WinAPI的函式,參數如何下)
cmj
高階會員


發表:15
回覆:242
積分:226
註冊:2002-06-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-01 21:05:06 IP:211.76.xxx.xxx 未訂閱
外部程式會出現視窗,視窗中會有edit,button等元件,可以delphi程式送message 去按button或填字在edit內. 1.取得視窗handle var h:integer; begin h:=FindWindow(PChar(0),pchar(Edit2.Text)); //edit2.Text為視窗Caption end; //*以下由handle取得caption***************** function Get_WinCaption(WinHandle:Word):String; var s100:array[0..100] of char; begin GetWindowText(WinHandle,S100,100); Result:=String(s100); end; //***以下取得Button之Handle function Get_ButtonHandle(ParentWinHandle:Word;Caption:string):Word; var WHS:string; i:integer; WH:word; begin WHS:=Get_ChildWinHandleString(ParentWinHandle,'Button'); WH:=0; i:=1; while i<=length(WHS) do begin WH:=FNto10( copy(WHS,i,4),16); if Get_WinCaption(WH)=Caption then Break; WH:=0; inc(i,4) end; Result:=WH; end; //***以下取得Edit之Handle function Get_EditHandle(ParentWinHandle:Word;Index:integer):Word; var WHS:string; begin WHS:=Get_ChildWinHandleString(ParentWinHandle,'Edit'); Result:=FnTo10(Copy(WHS,Index*4-3,4),16) end; //***以下供上二個函數呼叫 function Get_ChildWinHandleString(ParentWinHandle:Word;ChildType:String):String; //childType='Button' , 'Edit' , 'Static' .... type TEnum_Childwin=record ChildType:String; WinHandleString:string; //²Å¦Xchildtype¤§µøµ¡¤§HEX¦r¦ê4byte¤@²Õ end; //------------------------------------------------------------------- function Enum_Get_ChildWinHandleString(H:Word;var Child:TEnum_ChildWIn):Bool; StdCall; {32} var ClassNS:array[0..32] of char; begin GetClassName(h,ClassNS,32); if pos(Uppercase(Child.ChildType),Uppercase(String(ClassNS)))>0 then begin Child.WinHandleString:=Child.WinHandleString F10toN(h,4,16); end; Result:=TRUE; end; //------------------------------------------------------------------ var Child:TEnum_ChildWin; begin Child.ChildType:=ChildType; Child.WinHandleString:=''; EnumChildWindows(ParentWinHandle,@Enum_Get_ChildWinHandleString,longint(@Child)); Result:=Child.WinHandleString; end; ////////////////////////////// 由以上函數取得要控制handle再配合SendMessage函數達到控制目的 函數用法可以參考windows SDK方面書籍,Delphi help File
系統時間:2024-05-04 13:25:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!