您的位置:首页 > 编程语言 > Delphi

Delphi_EnumWindows 的一个例子

2013-12-06 22:35 246 查看
*********************************************************************************

EnumWindows 的功能是遍历所有顶层窗口

<1>

function EnumWindows(

lpEnumFunc: TFNWndEnumProc; {回调函数指针}

lParam: LPARAM {给回调函数的参数, 它对应回调函数的第二个参数}

): BOOL; stdcall; //成功与否, 其实是返回了回调函数的返回值

------------------------------------------------------------------------------------------------------------------

EnumWindows 专用的回调函数的格式:

<2>

function EnumWindowsProc(

hwnd: HWND; {找到的窗口句柄}

lParam: LPARAM {EnumWindows 传给的参数; 因为它是指针, 可传入, 但一般用作传出数据}

): Boolean; stdcall; {函数返回 False 时, 调用它的 EnumWindows 将停止遍历并返回 False}

------------------------------------------------------------------------------------------------- ------------------

使用的时候<1><2>要搭配在一起使用,先要声明<2>,因为<1>中的第一个参数就是<2>得来的

***********************************************************************************

获取所有顶层窗口的标题(排除无标题窗口)

使用前先创建一个窗口

窗口里要有一个list控件

和一个button控件

--------------------------------------------------------------------------------------------------------------------

function EnumWindowsProc_2(hwnd: HWND; lParam: LPARAM): Boolean; stdcall;

//这个是声明使用该函数的格式

var

buf: array[Byte] of Char;

//创建了一个数组变量叫buf,因为一个桌面上窗口不管怎么样都是很多很多的,所以用数组

begin

GetWindowText(hwnd, buf, SizeOf(buf));

//得到窗口的标题,然后分别赋值给每一个数组里的变量

if buf <> '' then Form1.lst1.Items.Add(buf);

//当buf不为零的情况下,使lst1控件装载这个数组,也就是显示数组里的内容

Result := True;

//函数EnumWidnowsProc_2的返回值,如果是ture的话,就成功了,反之就等于什么结果也没有滴....

end;

{前面这段相当于预处理}

procedure TForm1.btn1Click(Sender: TObject);

begin

EnumWindows(@EnumWindowsProc_2, 0);

//枚举所有的窗口

end;

{这才是真正发挥作用的,就这么一句而已}

>>原文来自:http://www.cnblogs.com/devcjq/articles/2269981.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: