FindWindow和FindWindowEx「建议收藏」

FindWindow和FindWindowEx「建议收藏」函数型:HWNDFindWindow(LPCTSTRIpClassName,LPCTSTRIpWindowName);IpClassName:指向一个指定了类名的空结束字符串或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员。该成员为16位,必须位于lpClassName的低16位,高位必须为0。如果为NULL,

大家好,又见面了,我是你们的朋友全栈君。

函数型:HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName);

IpClassName :指向一个指定了类名的空结束字符串或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员。该成员为16位,必须位于lpClassName的低16位,高位必须为0。如果为NULL,将会寻找任何与lpWindowName参数匹配的窗口,IpWindowName:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为空,则为所有窗口全匹配。

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

函数原型:HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow);
hwndParent:要查找子窗口的父窗口句柄。如果hwndParent为NULL,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口。

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

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

lpszWindow:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为 NULL,则为所有窗口全匹配。
返回值:如果函数成功,返回值为具有指定类名和窗口名的窗口句柄。如果函数失败,返回值为NULL。

注意点:
FindWindow 查找顶级窗口,不搜索子窗口。而FindWindowEx则是查找一个窗口的子窗口。
相同点:都是只查找一次,找到返回窗口句柄,找不到返回NULL。 都可与while构成循环。

简单例子
void Test()  
{  
    HWND hParentwnd = NULL;  
	hParentwnd = FindWindow(NULL, TEXT("ParentWnd"));
    while(true)  
    {   
		HWND hwnd = NULL;  
        HWND hwndTmp = ::FindWindowEx(hParentwnd, hwnd, NULL, TEXT("ChildWnd"));  
        
        if(!hwndTmp)
        {
            break;//没找到
        }
        else  
        {  
           //do some work
        } 
    }  
}  


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138102.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java的单例模式代码_单例模式例子

    java的单例模式代码_单例模式例子题目:请设计AppConfig类,并在AppConfig类中用main函数测试判断是否只有一个实例对象。(提示:基于static、private、构造函数使用单例模式)代码:publicclassAppConfig{privateinta;//检验是否为同一实例privatestaticAppConfigapp=newAppConfig();//设置私有静态的初始化对象,使得通过getApp生成的对象是同

    2022年8月11日
  • Python+PyCharm下载安装教程「建议收藏」

    Python+PyCharm下载安装教程「建议收藏」Python下载网址如下:https://www.python.org/downloads/单击Download进入下载页面,根据所用操作系统类型选择相应的Python安装文件进行下载(例如Windows7的32位操作系统选择Windowsx86executableinstaller进行下载、64位操作系统选择Windowsx86-64executableinstaller)Python安装注意勾选AddPython3.7toPATH选择,这样python的路径自动

    2022年8月26日
  • 卸载52好压,极速输入法,手机模拟大师这些流氓软件[通俗易懂]

    卸载52好压,极速输入法,手机模拟大师这些流氓软件[通俗易懂]卸载52好压,极速输入法的方法:通过控制面板里卸载了之后发现这两个流氓软件居然还在?于是换了一种卸载方法:先在官网下载并重新安装这两个软件,如果电脑已经安装了旧版本会提示安装的新版本会覆盖旧的版本,然后通过腾讯电脑管家卸载卸载手机模拟大师:在D盘找到LDSGameMaster,在文件夹里找到uninst,双击后卸载不要直接删除手机模拟大师的文件!如果直接删除文件到最后会发现有一个文件死活删不了,要通过卸载才能删除干净…

    2022年6月8日
  • 反射之invoke方法

    反射之invoke方法当获得类对应的Class对象后,可以通过getMethods()方法得到全部方法——返回Method数组,或者getMethod()方法来获取指定方法——Method对象。可以通过Method对象的invoke()方法来调用它对应的方法。Objectinvoke(Objectobj,Object…args):obj是执行该方法的Class对象,args是执行该方法时传入的实参。

    2022年5月20日
  • linux常用命令菜鸟教程_初学者化妆必备用品清单

    linux常用命令菜鸟教程_初学者化妆必备用品清单一.学习Linux终端命令的原因1.Linux刚面世时并没有图形界面,所有的操作全靠命令完成,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等2.在职场中,大量的服务器维护工作都是在远程通过SSH客户端来完成的,并没有图形界面,所有的维护工作都需要通过命令来完成在职场中,作为后端程序员,必须要或多或少的掌握一些Linux常用的终端命令。3.Linux发行版本的命令大概有200多个,但是常用的命令只有10多个而已二.linux常用指令ls命令…

    2022年8月21日
  • CSS3背景渐变属性 linear-gradient(线性渐变)和radial-gradient(径向渐变)建议收藏

    CSS3Gradient分为linear-gradient(线性渐变)和radial-gradient(径向渐变)。为了更好的应用CSS3Gradient,我们需要先了解一下目前的几种现代浏览器的

    2021年12月20日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号