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)
上一篇 2022年6月1日 上午7:36
下一篇 2022年6月1日 上午7:36


相关推荐

  • NAL详解

    NAL详解SODB 数据比特串 最原始的编码数据 RBSP 原始字节序列载荷 在 SODB 的后面填加了结尾比特 RBSPtrailing 一个 bit 1 若干比特 0 以便字节对齐 EBSP 扩展字节序列载荷在 RBSP 基础上填加了仿校验字节 0X03 它的原因是 在 NALU 加到 Annexb 上时 需要填加每组 NALU 之前的开始码 StartCodePre 如果该 NAL

    2026年3月18日
    1
  • Mysql报Deadlock found when trying to get lock; try restarting transaction问题解决

    Mysql报Deadlock found when trying to get lock; try restarting transaction问题解决Mysql 报 Deadlockfoun tryrestartin 问题解决 问题发生场景今天记录一下最近项目中遇到的一个问题 前几天在部署项目后 在线上运行过程中 突然报了入下这样的错误 从报错信息中我们可以看到 是 mysql 在执行 update 操作的时候报了一个死锁的问题 今天解决了 特此记录一下 Mysql 锁类型分析 MySQL 有三种锁的级别 页级 表级 行级 这个地方我遇到的问题是来自于行级锁 所以重点说一下

    2026年3月18日
    1
  • Latex数学公式表[通俗易懂]

    Latex数学公式表[通俗易懂]Latex的两种公式模式:行间(inline)模式:即在正文中插入数学内容。行间公式用$…$独立(display)模式:独立成行,可以有或没有编号。无编号用\[…\]

    2022年6月15日
    32
  • 深入理解深度学习分割网络Unet——U-Net: Convolutional Networks for Biomedical Image Segmentation

    深入理解深度学习分割网络Unet——U-Net: Convolutional Networks for Biomedical Image Segmentation背景Mask=Function(I)1.什么是图像分割问题呢?简单的来讲就是给一张图像,检测是用框出框出物体,而图像分割分出一个物体的准确轮廓。也这样考虑,给出一张图像I,这个问题就是求一个函数,从I映射到Mask。至于怎么求这个函数有多种方法。我们可以看到这个图,左边是给出图像,可以看到人和摩托车,右边是分割结果。2.求这个函数有很多方法,但是第一次将深…

    2022年4月25日
    58
  • 虚拟机繁忙解决办法

    虚拟机繁忙解决办法解决虚拟机繁忙的有效方法 问题示例图如下 解决方法一 这个方法也是最简单粗暴的 直接重启 解决方法二 此方法是针对于重启之后还是解决不了的情况 打开镜像的文件位置 找到下图的文件删掉 然后重启 解决方法三 最有效 首先 打开任务管理器 强制结束 vm 此时虚拟机是未正常关机的状况 此时重新开机会出现各种问题 第二步 按 win 键 r 打开运行 输入 msconfig 第三步 点击 服务 第四步 勾选左下角的 隐藏所有 Microsoft 服务 找到并勾选如图 5 个关于 vm 的服务

    2026年3月18日
    2
  • MySQL 字符集 注意事项

    MySQL 字符集 注意事项utf8 unicode ci 与 utf8 general ci 区别 utf8 unicode ci 和 utf8 general ci 对中英文来说没有实质的差别 utf8 general ci 校对速度快 但准确度稍差 utf8 unicode ci 准确度高 但校对速度稍慢 若数据库中有德语 法语或者俄语需求 需使用 utf8 unicode ci 其他情况用 utf8 general ci 即可 如果你想使用 gb2312 编码 那么建议你使用 latin1 作为数据表的默认字符集 这样就能直

    2025年12月12日
    6

发表回复

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

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