FindWindowEx 遍历所有窗口

FindWindowEx 遍历所有窗口 FindWindowEx 唯一麻烦是第2个参数的指定.Explore下窗口是Z序的 ,实际上就是根据第一个参数和第2个参数来找第2个参数后的一个窗口:HWNDchild=0;child=FindWindowEx (NULL,child,NULL,NULL);这样,child就是一个Explore,然后,通过循环能够找到c…

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

 

FindWindowEx  唯一麻烦是第2个参数的指定 .

Explore 下窗口是Z序的  , 实际上就是根据 第一个参数 和 第2个参数 来找 第2个参数后的一个窗口:

HWND child = 0;

child = FindWindowEx  ( NULL , child ,NULL,NULL);

这样 , child 就是一个Explore ,

然后 , 通过循环能够找到child 的下一个窗口

//遍历所有子窗口的子窗口 , Z序遍历
void print_window2(HWND parent , int level)
{
	HWND child = NULL;
	TCHAR buf[MAX_PATH];
	DWORD pid = 0, tid = 0;
	do{
		child = FindWindowEx(parent, child, NULL, NULL);
		int ret = GetWindowText(child, buf, MAX_PATH);
		buf[ret] = 0;
		tid = GetWindowThreadProcessId(child, &pid);
		for (int i = 0; i < level; ++i)
			_tprintf(L"\t");
		_tprintf(L"%s ,  pid:%d, tid:%d\n", buf, pid, tid);
		if (child)
			print_window2(child , level + 1);
	} while (child);
}

//遍历所有 explore 下的窗口 , Z序遍历
void print_window()
{
	HWND child = NULL;
	TCHAR buf[MAX_PATH];
	DWORD pid = 0, tid = 0;

	do{
        //查找 Explore 下的一个窗口,如果能找到则根据 Explore 下的child 继续找
		child = FindWindowEx(NULL, child, NULL, NULL);
		int ret = GetWindowText(child, buf, MAX_PATH);
		buf[ret] = 0;
		tid = GetWindowThreadProcessId(child, &pid);
		_tprintf(L"%s ,  pid:%d, tid:%d\n", buf, pid, tid);
        
        //遍历子窗口们
		if (child)
			print_window2(child, 1);
	} while (child);
}

 

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

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

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


相关推荐

  • 将图像转换为8位通道_imagej像素和毫米转换

    将图像转换为8位通道_imagej像素和毫米转换一背景遥感图像一般像素深度比较高,基本的就是unit16了,但是如果想在OpenCV中正确使用,而且不丢失数据RGB三通道信息,就需要转为unit8才能进行其他分析。二分析unit16的图像最大值为216-1=65535,而OpenCV中的图像最大值为28-1=255,当大于255时会自动变为255,这样数据信息就丢失了。下面代码采用的方式是线性缩放,将0到65535的数值线性缩…

    2022年9月17日
  • 什么是差分数组?「建议收藏」

    什么是差分数组?「建议收藏」问题背景如果给你一个包含5000万个元素的数组,然后会有频繁区间修改操作,那什么是频繁的区间修改操作呢?比如让第1个数到第1000万个数每个数都加上1,而且这种操作时频繁的。此时你应该怎么做?很容易想到的是,从第1个数开始遍历,一直遍历到第1000万个数,然后每个数都加上1,如果这种操作很频繁的话,那这种暴力的方法在一些实时的系统中可能就拉跨了。因此,今天的主角就出现了——差分数组。…

    2022年4月28日
  • 海量数据查询方案mysql_Mysql海量数据存储和解决方案之二—-Mysql分表查询海量数据…[通俗易懂]

    关键词:分库分表,路由机制,跨区查询,MySQL数据变更,分表数据查询管理器与线程技术的结合,Cache前面已经讲过Mysql实现海量海量数据存储查询时,主要有几个关键点,分表,分库,集群,M-S,负载均衡。其中分库分表是很重要的一点。分库是如何将海量的Mysql数据放到不同的服务器中,分表则是在分库基础上对数据现进行逻辑上的划分。数据划分可有多种方式,找到一个主键后,可以按号段分,也可以Has…

    2022年4月14日
  • kmp的最小循环节

    kmp的最小循环节

    2021年9月27日
  • 【谷粒商城】ElasticSearch、上架与检索

    【谷粒商城】ElasticSearch、上架与检索文章目录1.ELASTICSEARCH0、简介1、安装elasticsearch2、初步检索1)_CAT2)索引一个文档3)查看文档4)更新文档5)删除文档或索引6)ES的批量操作——bulk7)样本测试数据3、进阶检索1)searchApi2)QueryDSL(1)基本语法格式(2)返回部分字段(3)match匹配查询(4)match_phrase[短句匹配](5)multi_math【多字段匹配】(6)bool用来做复合查询(7)Filter【结果过滤】(8)term(9)Aggregat

    2022年5月7日
  • MYSQL和SQL的区别

    MYSQL和SQL的区别什么是SQL?SQL是一种用于操作数据库的语言。SQL是用于所有数据库的基本语言。不同数据库之间存在较小的语法更改,但基本的SQL语法基本保持不变。SQL是StructuredQueryLanguage的简短缩写。根据ANSI(美国国家标准协会),SQL是操作关系数据库管理系统的标准语言。SQL用于访问,更新和操作数据库中的数据。它的设计允许管理RDBMS中的数据,例如MYSQL。SQL语言还用于控制数据访问以及数据库模式的创建和修改。什么是MYSQL?MySQL是在90年代中期开发的,是

    2022年10月2日

发表回复

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

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