FindWindowEx参数详解

阅读: 评论:0

2024年2月8日发(作者:)

FindWindowEx参数详解

FindWindowEx参数详解

FindWindowEx参数详解

本函数的其他内容在网络上都比较多,这里主要说一下它的参数设置和搜索结果的区别。

函数功能:在窗口列表中寻找与指定条件相符的第一个子窗口。该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。

函数原型:

HWND FindWindowEx(HWND hwndParent,HWND

hwndChildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow);参数:

hwndParent:要查找子窗口的父窗口句柄。

如果hwndParent为NULL,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口。

Windows NT5.0 and later:如果HWND_MESSAGE,函数仅查找所有消息窗口。

hwndChildAfter :子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndParent窗口的直接子窗口而非后代窗口。如果HwndChildAfter为NULL(C#中为new IntPtr(0)),查找从hwndParent的第一个子窗口开始。如果hwndParent 和hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口。

lpszClass:指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员。该成员为16位,必须位于lpClassName的低16位,高位必须为0。

lpszWindow:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为NULL(注意:””和null是有区别的),则为hwndParent是

所有窗口全匹配。

返回值:如果函数成功,返回值为具有指定类名和窗口名的窗口句柄。如果函数失败,返回值为NULL。

例子:

//****************** 这部分内容是为了说明函数FindWindowEx的用法的额外的实验部分******************// IntPtr ExitWnd = new

IntPtr(0); //临时储存操作窗体的句柄

StringBuilder stbf_WndStr = new StringBuilder();//定义存储String的Butter

stbf_ty = 60;

//1) 该例子一直无法找到Exit按键,因为Name不为null,而是等于"",null和""是有区别的

= + "rnrn1) 此处寻找不到Exit的按键,因为Name不为null,而是等于""";

ExitWnd = FindWindowEx(ParenthWnd, new IntPtr(0),

lpszClass_Submit, "");

if (!())

{

GetWindowText(ExitWnd, stbf_WndStr, stbf_ty

- 1);

= + "rn实验内容:

= "+ stbf_ng(); }

else

{

= + "rnErr: ExitWnd = null";

}

//2) 寻找到Exit的按键,因为Name包含正确的名字"Exit"

= + "rnrn2) 寻找到Exit的按键,因为Name包含正确的名字

"Exit"";

ExitWnd = FindWindowEx(ParenthWnd, new IntPtr(0),

lpszClass_Submit, "Exit");

if (!())

{

GetWindowText(ExitWnd, stbf_WndStr, stbf_ty

- 1);

= + "rn实验内容:

= "+ stbf_ng(); }

else

{

= + "rnErr: ExitWnd = null";

}

//3) 此处寻找不到Login的按键,因为Name不为null,而是等于"",null和""是有区别的

= + "rnrn3) 此处寻找不到Login的按键,因为Name不为null,而是等于""";

LogBtWnd = FindWindowEx(ParenthWnd, ExitWnd,

lpszClass_Submit, "");

if (!())

{

GetWindowText(LogBtWnd,

stbf_ty - 1);

= + "rn已搜索到登录按键: " +

stbf_ng();

}

else

{

= + "rn无法找到登录按键的子stbf_WndStr,

窗口";

}

//4) 此处寻找不到Login的按键,因为FindWindowEx第二个参数为空,且Name = null,从第一个子窗口开始查找,

//根据Tab Index的顺序找到的第一个属于按键类的该是Reset按键.

=

+ "rnrn4) 此处寻找不到Login的按键,因为FindWindowEx第二个参数为空,且Name = null,从第一个子窗口开始查找,"

+ "根据Tab Index的顺序找到的第一个属于按键类的该是Reset按键.";

LogBtWnd = FindWindowEx(ParenthWnd, new IntPtr(0),

lpszClass_Submit, null);

if (!())

{

GetWindowText(LogBtWnd,

stbf_ty - 1);

= + "rn已搜索到登录按键: " +

stbf_ng();

}

else

{

= + "rn无法找到登录按键的子窗口";

}

//5) 成功寻找到Login的按键,此处第个参数放置ExitWnd或者new IntPtr(0)都可以,因为Exit和Login都

属于相同的类,而且具有不同的Name.

=

+ "rnrn5) 成功寻找到Login的按键,此处第个参数放置stbf_WndStr,

ExitWnd或者new IntPtr(0)都可以,"

+ "因为Exit和Login都属于相同的类,而且具有不同的Name.";

LogBtWnd = FindWindowEx(ParenthWnd, ExitWnd,

lpszClass_Submit, lpszName_Submit);

if (!())

{

GetWindowText(LogBtWnd,

stbf_ty - 1);

= + "rn已搜索到登录按键: " +

stbf_ng();

}

else

{

= + "rn无法找到登录按键的子窗口"; }

//6) 成功寻找到Login的按键,此处第个参数放置ExitWnd,即使Name=null也可以找到,因为ExitWnd的下一

个就是Login按键.

=

+ "rnrn6) 成功寻找到Login的按键,此处第个参数放置ExitWnd,即使Name=null也可以找到,因为ExitWnd的下一个就是Login按键.";

LogBtWnd = FindWindowEx(ParenthWnd, ExitWnd,

lpszClass_Submit, null);

if (!())

{

GetWindowText(LogBtWnd,

stbf_ty - 1);

= + "rn已搜索到登录按键: " +

stbf_ng();

stbf_WndStr,

stbf_WndStr,

}

else

{

= + "rn无法找到登录按键的子窗口";

}

return;

完整的源代码请参考RemoteLogin的例子。

本段代码输出:

1) 此处寻找不到Exit的按键,因为Name不为null,而是等于""

Err: ExitWnd = null

2) 寻找到Exit的按键,因为Name包含正确的名字"Exit"

实验内容: = Exit

3) 此处寻找不到Login的按键,因为Name不为null,而是等于""

无法找到登录按键的子窗口

4) 此处寻找不到Login的按键,因为FindWindowEx第二个参数为空,且Name = null,从第一个子窗口开始查找,根据Tab Index

的顺序找到的第一个属于按键类的该是Reset按键.

已搜索到登录按键: Reset

5) 成功寻找到Login的按键,此处第2个参数放置ExitWnd或者new IntPtr(0)都可以,因为Exit和Login都属于相同的类,而且具有不同的Name.

已搜索到登录按键: LogIn

6) 成功寻找到Login的按键,此处第2个参数放置ExitWnd,即使Name=null也可以找到,因为ExitWnd的下一个就是Login 按键.

已搜索到登录按键: LogIn

FindWindowEx参数详解

本文发布于:2024-02-08 12:16:44,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170736580467441.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:按键   函数   参数   寻找   查找
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23