国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

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

雖然不是.NET的,但對我們理解回調有幫助:如何控制其他程序窗體上的窗口控件:上

雖然不是.NET的,但對我們理解回調有幫助:如何控制其他程序窗體上的窗口控件:上

更新時間:2021-09-25 文章作者:未知 信息來源:網絡 閱讀次數(shù):

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

回過頭來再看一下EnumWindowsProc:

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

當系統(tǒng)找到了一個窗口后,就開始調用這個回調函數(shù),將窗口的句柄作為第一個參數(shù)傳遞過來,將在EnumWindows中l(wèi)Param: LPARAM這個程序定義的值作為第二個參數(shù)傳遞過來。

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

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

得到窗口標題用:

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

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

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

要得到窗口類名稱用:

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

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

我們先編寫回調函數(shù):EnumWindowsProc。現(xiàn)在告訴自己,我們已經有了兩個參數(shù)的值了。這兩個參數(shù)是系統(tǒng)給我們的.

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

先在interface部分聲明函數(shù)。

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

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

然后在implementation部分定義函數(shù):
function EnumWindowsProc(AhWnd:LongInt;AForm:TForm1):boolean;
var
lpszClassName,lpszWindowText:array[0..254] of char;//定義兩個緩沖區(qū)。
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函數(shù),注冊回調函數(shù)入口地址,讓系統(tǒng)調用回調函數(shù),列舉窗口了。所以再添加一個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單步跟蹤調試一下,看看回調函數(shù)是怎么被調用的。

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

本類教程下載

系統(tǒng)下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        欧美日韩日日摸| 91极品美女在线| 91亚洲精品久久久蜜桃| 欧美变态tickle挠乳网站| 首页综合国产亚洲丝袜| 日韩一区二区视频在线观看| 日韩在线一区二区三区| 555www色欧美视频| 青青草91视频| 欧美日韩另类一区| 亚瑟在线精品视频| 欧美日韩1区2区| 琪琪一区二区三区| 欧美高清激情brazzers| 亚洲成人动漫在线免费观看| 色偷偷久久人人79超碰人人澡| 最新日韩av在线| 成人免费不卡视频| 日韩理论片网站| 色哟哟精品一区| 亚洲电影激情视频网站| 欧美精品一区二区三区在线 | 亚洲一区二区四区蜜桃| 91色porny蝌蚪| 亚洲日本在线a| 欧美日韩国产乱码电影| 日韩精品一二区| 精品日韩99亚洲| 国产成人精品网址| 国产精品国产三级国产普通话三级| 不卡的看片网站| 亚洲日本一区二区三区| 欧洲激情一区二区| 婷婷丁香久久五月婷婷| 26uuu精品一区二区在线观看| 国产精品一二三四五| 亚洲柠檬福利资源导航| 欧美一区在线视频| 北条麻妃国产九九精品视频| 亚洲综合视频网| 欧美mv和日韩mv国产网站| 成人毛片在线观看| 亚洲综合一区在线| 日韩欧美在线123| av动漫一区二区| 日韩成人dvd| 亚洲欧洲国产日韩| 制服丝袜一区二区三区| 福利电影一区二区| 日本欧美在线观看| 国产精品免费丝袜| 在线成人免费观看| 成人午夜看片网址| 日本美女视频一区二区| 欧美一卡2卡三卡4卡5免费| 丁香一区二区三区| 美日韩一区二区三区| 亚洲欧美国产高清| 国产亚洲美州欧州综合国| 欧美在线观看一区| 成人18精品视频| 亚洲最新在线观看| 中文字幕av一区二区三区免费看| 欧美性感一区二区三区| 不卡大黄网站免费看| 久久aⅴ国产欧美74aaa| 天堂va蜜桃一区二区三区漫画版| 国产精品久久久久久久久动漫| 精品欧美黑人一区二区三区| 在线视频你懂得一区二区三区| 国产大片一区二区| 青青草国产成人av片免费| 亚洲午夜在线观看视频在线| 国产精品久久久久久亚洲伦| 久久综合网色—综合色88| 欧美男同性恋视频网站| 色婷婷亚洲精品| 本田岬高潮一区二区三区| 国产一区三区三区| 国内精品第一页| 美女国产一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲免费观看视频| 一区二区三区四区视频精品免费| 国产精品视频看| 国产欧美日韩视频在线观看| 久久先锋资源网| 国产欧美一区二区精品性色超碰 | 国产欧美一区二区精品仙草咪| 欧美一区二区三区性视频| 欧美日韩一区精品| 在线成人av网站| 欧美一区二区三区男人的天堂| 337p亚洲精品色噜噜噜| 99riav久久精品riav| 男人的天堂亚洲一区| 亚洲欧美成人一区二区三区| 精品国产免费一区二区三区四区| 欧美一区二区三区不卡| 精品欧美乱码久久久久久| 欧美怡红院视频| 国产91色综合久久免费分享| 麻豆一区二区三| 免费高清不卡av| 亚洲高清免费一级二级三级| 中文字幕一区二| 国产校园另类小说区| 日韩精品一区二区三区在线观看| 欧美无砖专区一中文字| 日韩欧美中文一区| 久久精品亚洲国产奇米99| 日韩午夜在线播放| 中文字幕国产一区二区| 久久精品水蜜桃av综合天堂| 国产精品女上位| 亚洲一区二区高清| 蜜桃视频一区二区三区| 成人一区二区在线观看| 国产激情一区二区三区四区| 九一久久久久久| 久久97超碰国产精品超碰| 久久精品国产一区二区| 久久www免费人成看片高清| 久久精品国产亚洲aⅴ| 不卡一区二区中文字幕| 欧美一区二区三区四区视频| 久久久精品影视| 亚洲va韩国va欧美va| 韩国女主播一区| 欧美三级蜜桃2在线观看| 欧美日本一区二区三区| 中文字幕av一区二区三区| 亚洲成人精品影院| 国产91精品在线观看| 欧美片网站yy| 亚洲精品视频在线看| 国产一区二三区好的| 欧美日韩亚洲综合| 国产精品毛片大码女人| 国产真实精品久久二三区| 欧美日韩高清影院| 亚洲欧美aⅴ...| 国产高清不卡一区| 日韩午夜激情av| 天天综合网天天综合色| 黄页视频在线91| 99久久99久久精品国产片果冻| 欧美亚洲动漫精品| 久久人人爽爽爽人久久久| 亚洲欧洲国产日韩| 青青草精品视频| 99re66热这里只有精品3直播| 亚洲精品在线观| 狠狠色丁香九九婷婷综合五月 | 亚洲一区二区不卡免费| 国产精品18久久久久久久久 | 麻豆一区二区在线| 337p亚洲精品色噜噜狠狠| 一区二区三区加勒比av| 99re8在线精品视频免费播放| 国产精品免费丝袜| 成人高清av在线| 欧美经典一区二区三区| 国产成人综合亚洲网站| 久久色在线视频| 国产成人a级片| 中文字幕成人在线观看| 不卡一区二区三区四区| 亚洲天堂成人在线观看| 在线观看av一区| 亚洲电影你懂得| 欧美成人一区二区| 国产成人午夜高潮毛片| 亚洲欧洲www| 国产成人综合自拍| 日韩精品一区国产麻豆| 亚洲另类在线一区| av在线一区二区三区| 日韩精品一区二区三区中文不卡 | 激情综合亚洲精品| 久久久亚洲精品一区二区三区 | 水野朝阳av一区二区三区| 日韩免费视频线观看| 亚洲精品ww久久久久久p站| 欧美三区免费完整视频在线观看| 视频一区国产视频| www久久精品| 99re热这里只有精品免费视频| 一区二区三区在线观看视频| 欧美福利电影网| 国产一区二区不卡| 一区二区三区免费| 日韩欧美在线不卡| caoporn国产精品| 亚洲成人av免费| 欧美成人一区二区三区在线观看| 国产成人综合精品三级| 一区二区免费在线| 欧美r级在线观看| 91视频91自|