修改自dllee大大的GetWinAndSubWin2程式(Delphi 7 版本,含Src ) |
|
G01
高階會員 發表:249 回覆:379 積分:215 註冊:2002-05-21 發送簡訊給我 |
如題.
回饋給所有KTop上的 Delphi User!!
重要技巧提示: 將VCL元件位址轉為字串後,再行復原為VCL元件
var str:string;
mm:TComboBox;
begin
str := Format('$%p',[@ComboBox1]);//將VCL元件指標(Pointer)轉為 字串!!
aa := Ptr(StrToInt64(str)); //將位址字串轉為指標
mm := TComboBox(aa^); //將指標所指向的值,還原為VCL元件
mm.Items.Add('123');
end; 參考圖形如下:
G01
|
corey
一般會員 發表:34 回覆:44 積分:14 註冊:2003-04-19 發送簡訊給我 |
|
corey
一般會員 發表:34 回覆:44 積分:14 註冊:2003-04-19 發送簡訊給我 |
引言: 請問一個初學者的問題 EnumWindows(@EnumWindowsCallBack,StrToInt64(str)); 上述EnumWindowsCallBack函數如何實現callback 謝謝指教不好意思找到了(msdn) EnumWindows The EnumWindows function enumerates all top-level windows on the screen by passing the handle to each window, in turn, to an application-defined callback function. EnumWindows continues until the last top-level window is enumerated or the callback function returns FALSE. BOOL EnumWindows( WNDENUMPROC lpEnumFunc, // pointer to callback function LPARAM lParam // application-defined value ); Parameters lpEnumFunc Pointer to an application-defined callback function. For more information, see EnumWindowsProc. lParam Specifies an application-defined value to be passed to the callback function. |
G01
高階會員 發表:249 回覆:379 積分:215 註冊:2002-05-21 發送簡訊給我 |
To Corey: >>>EnumWindows(@EnumWindowsCallBack,StrToInt64(str));
>>>BOOL EnumWindows(
>>>WNDENUMPROC lpEnumFunc, // pointer to callback function
>>>LPARAM lParam // application-defined value); 說明EnumWindows( )
1.第一個參數為: CallBack函式的位址-->@EnumWindowsCallBack
2.第二個參數為: LParam--->意思是說,允許程式設計人員自行針對
這個參數進行Define!! 在這個程式我們是要帶入
VCL Component進行處理,但是LParam屬於整數類別
所以我們才會使用以下技巧
--->將VCL元件位址轉為字串後,再轉為一整數型態
帶入LParam參數,然後在EnumWindowsCallBack
函式中再行復原為VCL元件 附帶要說明的是
在Delphi中,與Win32 Api的應用上;只要是函式是屬於CallBack函式
在定義函式時,要加上對於該函式的呼叫慣例為Win32Api的呼叫慣例
---> stdcall G01
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |