在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

如何控制其他程序窗體上的窗口控件

如何控制其他程序窗體上的窗口控件

更新時間:2022-05-16 文章作者:未知 信息來源:網絡 閱讀次數:

首先申明:我是菜鳥,我只不過想把困繞了我很長時間的問題的解決方案發表出來,免得以后我又忘記,同時給還不知道這些小知識的同僚一些幫助。各位不要笑我的淺薄。同時為了表示我的低級,我會很羅嗦的講一些基本的東西,這些都是我的理解,很不準確。

用我的方法來控制其他程序窗體上的窗口控件,必須先了解什么是回調函數。我的理解是這樣的:

回調函數寫出來不是自己的程序去調用的,反而是讓其他的東西去調用,比如windows操作系統,比如其他的程序等等之類的。但是什么時候被調用卻不知道了。回調函數一般是按照調用者的要求定義好參數和返回值的類型,你向調用者提供你的回調函數的入口地址,然后調用者有什么事件發生的時候就可以隨時按照你提供的地址調用這個函數通知你,并按照預先規定好的形式傳遞參數。所以很多人打比方,說回調函數還真有點像您隨身帶的BP機:告訴別人號碼,在它有事情時Call您!

所以一個回調函數寫出來之后,一定有個注冊的動作,就是告訴調用者,你怎么樣找到我寫的函數。某些Windows API 函數會要求以回調函數地址作為其參數之一,例如SetTimer 、LineDDA 、EnumObjects,以及我們下面要用到的EnumWindows。

在Delphi里聲明一個回調函數的格式很簡單,例如:

function EnumWindowsProc(AhWnd:LongInt;lParam:LongInt):boolean;stdcall;


首先是函數名稱可以隨便亂取,但函數參數的類型一般不得亂來,其順序,數據類型等都有規定的,因為這些都是讓其他程序調用的,他們已經規定好了的,但參數名稱可以隨便亂叫。注意后面一定要帶上“stdcall”,

stdcall是標準調用,也就是說采用標準windows參數傳遞方式來調用函數。

編寫函數體就很簡單了,利用傳遞過來的參數就可以了,只要記住,這些參數是別人送給你的,你只要知道這些參數代表了什么意思。

再看個向調用者注冊回調函數入口地址的函數。
function EnumWindows(lpEnumFunc: TFNWndEnumProc; lParam: LPARAM): BOOL; stdcall;


TFNWndEnumProc其實就是指針類型。其中的lpEnumFunc就是回調函數的入口地址了。

下面是調用EnumWindows的格式:
EnumWindows(@EnumWindowsProc,0);


通過向系統注冊回調函數的入口地址,系統就能在需要的時候,調用回調函數,傳遞參數給它,也許這些參數就是我們想要的。

EnumWindows函數的功能是:枚舉屏幕上所有程序中的頂層窗口,將窗口句柄以參數的形式傳遞給回調函數。找到一個窗口,就調用一次回調函數。枚舉結束的條件是:要么枚舉完所有的窗口,要么回調函數返回False。

lParam: LPARAM參數是程序定義的值,這個值被傳遞到回調函數。

回過頭來再看一下EnumWindowsProc:

function EnumWindowsProc(AhWnd:LongInt;lParam:LongInt):boolean;stdcall;

當系統找到了一個窗口后,就開始調用這個回調函數,將窗口的句柄作為第一個參數傳遞過來,將在EnumWindows中lParam: LPARAM這個程序定義的值作為第二個參數傳遞過來。

所以我們可以在EnumWindowsProc函數中利用傳遞過來的兩個參數來做某些處理了。

下面我們新建一個程序列舉系統中所有程序的頂層窗口,我們要得到窗口的標題,要得到窗口類名稱。

得到窗口標題用:

function GetWindowText(hWnd: HWND; lpString: PChar; nMaxCount: Integer): Integer; stdcall;


該函數功能是將窗口句柄為hWnd的窗口的標題拷入到一個緩沖區lpString。nMaxCount是拷入緩沖區內的最大的字符數。

要得到窗口標題還可以發送消息:WM_GETTEXT,其實GetWindowText就是發送WM_GETTEXT消息的。

要得到窗口類名稱用:

function GetClassName(hWnd: HWND; lpClassName: PChar; nMaxCount: Integer): Integer; stdcall;


其參數意義和上面的函數差不多。不詳細解釋了。

我們先編寫回調函數:EnumWindowsProc。現在告訴自己,我們已經有了兩個參數的值了。這兩個參數是系統給我們的.

為了顯示窗口標題和類名,我們用一個TMemo控件。

先在interface部分聲明函數。

function EnumWindowsProc(AhWnd:LongInt;AForm:TForm1):boolean;stdcall;


注意我將第二個參數改了,不要緊,到時候調用的時候注意看。

然后在implementation部分定義函數:

function EnumWindowsProc(AhWnd:LongInt;AForm:TForm1):boolean;
var
lpszClassName,lpszWindowText:array[0..254] of char; //定義兩個緩沖區。
begin
GetWindowText(AhWnd,lpszWindowText,254); //得到窗口標題
GetClassName(AhWnd,lpszClassName,254); //得到窗口類名。
Aform.memo1.lines.add(StrPas(lpszWindowText));
Aform.memo1.lines.add(StrPas(lpszClassName));
Aform.memo1.lines.add('--------------------');
Result:=True;
end;


接著需要做的就是調用EnumWindows函數,注冊回調函數入口地址,讓系統調用回調函數,列舉窗口了。所以再添加一個TButton: btn_listwindow

procedure TForm1.btn_listwindowClick(Sender: TObject);
begin
EnumWindows(@EnumWindowsProc,LongInt(self));
end;


程序清單如下:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Memo1: TMemo;
btn_listwindow: TButton;
procedure btn_listwindowClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

function EnumWindowsProc(AhWnd:LongInt;AForm:TForm1):boolean;stdcall;

implementation
{$R *.dfm}
function EnumWindowsProc(AhWnd:LongInt;AForm:TForm1):boolean;
var
lpszClassName,lpszWindowText:array[0..254] of char;
begin
GetWindowText(AhWnd,lpszWindowText,254);
GetClassName(AhWnd,lpszClassName,254);
Aform.memo1.lines.add(StrPas(lpszWindowText));
Aform.memo1.lines.add(StrPas(lpszClassName));
Aform.memo1.lines.add('--------------------');
Result:=True;
end;

procedure TForm1.btn_listwindowClick(Sender: TObject);
begin
EnumWindows(@EnumWindowsProc,LongInt(self));
end;

end.


F9,運行,看看結果。最好是F7單步跟蹤調試一下,看看回調函數是怎么被調用的。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 女人天堂av手机在线| 国产日产欧美视频| 中文字幕视频在线免费观看| 大荫蒂性生交片| 色姑娘综合天天| 久久精品亚洲天堂| 国产高清免费在线| 亚洲图色中文字幕| 久久免费视频2| 中国黄色录像片| h无码动漫在线观看| 看全色黄大色大片| av 日韩 人妻 黑人 综合 无码| 美女扒开大腿让男人桶| 中文字幕在线乱| 国产一级大片免费看| 97在线免费视频观看| 日本大片免费看| 日本福利视频在线| 欧美精品aaaa| 国产精品无码乱伦| 欧美日韩理论片| 国产精品久久国产| 日韩中文字幕三区| 亚洲午夜激情影院| 亚洲精品国产suv一区88| 男女猛烈激情xx00免费视频| 色综合av综合无码综合网站| 午夜激情在线观看视频| 91社在线播放| 日韩精品―中文字幕| 黄色片在线免费| 午夜探花在线观看| 无码精品a∨在线观看中文| 手机在线免费观看毛片| 日本xxx免费| 日韩av一二三四| 天堂av免费看| 久久久久久久片| 久草视频这里只有精品| 777视频在线| 妺妺窝人体色777777| 日韩一级免费片| 婷婷五月综合缴情在线视频| 一区二区三区四区毛片| 黄色片网址在线观看| 日韩视频在线观看一区二区三区| 欧美激情 国产精品| 国产aⅴ爽av久久久久| 青青青免费在线| 米仓穗香在线观看| 精品999在线| 国产午夜福利视频在线观看| 亚洲国产精品影视| 亚洲一级免费观看| 国产真人无码作爱视频免费| www.夜夜爱| 小泽玛利亚av在线| 色男人天堂av| 亚洲精品永久视频| 杨幂毛片午夜性生毛片 | 在线免费观看av的网站| 51xx午夜影福利| 波多野结衣三级在线| 一区二区三区入口| 亚洲精品一二三四五区| 欧美激情 国产精品| 91亚洲精品国产| 强伦女教师2:伦理在线观看| 伊人五月天婷婷| 少妇激情一区二区三区| 91日韩视频在线观看| 亚洲精品高清无码视频| 白嫩少妇丰满一区二区| 国产a视频免费观看| 国产成人久久777777| 精品久久久久久久无码| 欧美在线观看www| 欧美 日韩 国产在线观看| 亚洲爆乳无码精品aaa片蜜桃| 日韩成人三级视频| www.av毛片| 亚洲熟妇无码另类久久久| 青青青青在线视频| 国产91在线免费| 日韩一级片播放| 色一情一区二区三区| 黄色高清视频网站| 欧美精品久久久久久久自慰| 国产午夜伦鲁鲁| 中文字幕天天干| 一二三四中文字幕| 无码人妻精品一区二区三区在线| 男人天堂网视频| 久久婷五月综合| 成人性做爰片免费视频| 国产午夜福利在线播放| 成年人小视频网站| 黄色a级在线观看| 久久久亚洲精品无码| 天堂网在线免费观看| 成人毛片100部免费看| 欧美日韩黄色一级片| 国产在线视频三区| 欧美精品一区免费| 自拍偷拍21p| 屁屁影院ccyy国产第一页| 成人在线观看a| 只有这里有精品| 男女视频一区二区三区| 黄色一级片av| 亚洲精品免费一区亚洲精品免费精品一区 | 天堂av2020| 激情五月宗合网| 天堂v在线视频| 免费涩涩18网站入口| 国产免费一区二区视频| 性欧美1819| 黄色国产精品视频| 免费看国产一级片| 免费的一级黄色片| 两性午夜免费视频| 日韩免费高清在线| 国产精品后入内射日本在线观看| 天天爱天天做天天操| 国产1区2区在线| 凹凸国产熟女精品视频| 日本男女交配视频| 特级黄色录像片| 懂色av一区二区三区四区五区| 欧美日韩在线免费观看视频| 天堂一区在线观看| 黄色片视频在线播放| 69sex久久精品国产麻豆| 亚洲天堂第一区| 99久久久精品视频| 国产精品久久国产| 欧美久久久久久久久久久久久久| 精品视频免费在线播放| 国产精品国产亚洲精品看不卡| 欧美这里只有精品| 日韩黄色片在线| 少妇高潮毛片色欲ava片| 真人抽搐一进一出视频| 野外做受又硬又粗又大视频√| 日韩av综合在线观看| 日韩精品―中文字幕| 成人毛片一区二区| 精品视频无码一区二区三区| 成人在线观看黄| 国产又黄又猛的视频| 最近中文字幕免费mv| 女人床在线观看| 国产一区二区网| 波多野结衣家庭教师视频| 欧美精品性生活| 少妇高潮大叫好爽喷水| 三上悠亚久久精品| 午夜免费一区二区| 亚洲制服在线观看| 尤物av无码色av无码| 亚洲色图38p| 日韩精品一区二区三区四| 欧美 日韩精品| 日韩欧美色视频| 97xxxxx| 香蕉视频色在线观看| 女人扒开屁股爽桶30分钟| 九九九九九国产| 免费看日本毛片| 日本精品一区在线| 18禁免费无码无遮挡不卡网站| 国产成人免费高清视频| 大j8黑人w巨大888a片| www.久久91| 免费毛片小视频| 国产精品88久久久久久妇女 | 97在线播放视频| 妞干网这里只有精品| 国产精品欧美激情在线观看| 五月天婷婷影视| 人妻内射一区二区在线视频 | 大地资源网在线观看免费官网| 视频在线观看免费高清| 国产精品久久..4399| 男女爱爱视频网站| 性生活免费在线观看| 北条麻妃在线一区| 亚洲熟妇无码一区二区三区| 天堂中文av在线| 嫩草av久久伊人妇女超级a| 日本免费成人网| 黄黄视频在线观看| 五月天国产视频| 欧美午夜精品理论片| 一道本视频在线观看| 国产天堂在线播放| 久久精品午夜福利| 亚洲国产精品毛片av不卡在线| 久久久国产欧美|