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/138044.html原文链接:https://javaforall.net

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


相关推荐

  • CreateProcess和WinExec

    CreateProcess和WinExecCreateProcess非阻塞运行,而WinExec为阻塞运行,它非要等到返回时才继续执行。在两个进程共享同一个端口时,为了能让一个退出另一个申请,必须用函数CreateProcess,等到我的端口资源释放后,在运行另一个进程进行申请

    2022年7月11日
    42
  • python标准库6张思维导图学明白「建议收藏」

    python标准库6张思维导图学明白「建议收藏」先呈上高清下载地址链接:https://pan.baidu.com/s/14x2Cno96vp67qPz0Ee4weA提取码:7j7g1、标准库概览标准库包含:数据库处理,输入输出存储…

    2022年7月20日
    17
  • vue 引用mockjs 模拟真实的数据

    vue 引用mockjs 模拟真实的数据vue mockjs 模拟数据 实现前后端分离开发在项目中尝试了 mockjs mock 数据 实现前后端分离开发 关于 mockjs 官网描述的是 1 前后端分离 2 不需要修改既有代码 就可以拦截 Ajax 请求 返回模拟的响应数据 3 数据类型丰富 4 通过随机数据 模拟各种场景 等等优点 总结起来就是在后端接口没有开发完成之前 前端可以用已有的接口文档 在真实的请求上拦

    2025年8月26日
    4
  • c++中按位取反_取反和按位取反

    c++中按位取反_取反和按位取反#include<stdio.h>#include<iostream>usingnamespacestd;voidmain(){//做这类题目抓住两点:第一、无论是以进制表示还是整数形式赋值给变量,都要根据变量相应//的数据类型,表示为…

    2022年8月14日
    7
  • 复制粘贴网页上的文字有的字粘贴不上_网页无法复制的文字怎么复制

    复制粘贴网页上的文字有的字粘贴不上_网页无法复制的文字怎么复制当你在浏览一些网站时,是否有遇到过无法复制粘贴的情况。看到一篇好的文章,或者一段好的语句,想要复制下来,却发现无法使用复制粘贴功能,这是该网站进行了加密设置。而你又不想屏幕截图再OCR识别,那该怎么办?桌面天下的小编有办法!从浏览器的相关功能下手如果你使用的是IE浏览器的话,我们可以更改其相关设置,屏蔽掉网站的某些功能就能达到目的了。安全设置帮你忙:启动IE→点击菜单“工具”中“Internet选…

    2022年10月13日
    3
  • 如何在pycharm运行python_pycharm怎么运行部分代码

    如何在pycharm运行python_pycharm怎么运行部分代码这篇文章主要介绍了Pycharm如何运行.py文件的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧!Pycharm时一个非常好用的IDE,但是一开始的时候甚至会因为.py文件不能运行而束手无策。。。这里需要说明一下Pycharm的作用,Pycharm并不是一个像matlab那样什么都自己提供的软件,它更像一个非常棒的…

    2022年8月25日
    6

发表回复

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

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