win32-使用EnumWindows比较两个窗口的Z轴
通过使用EnumWindows()和枚举窗口来手动确定EnumChildWindows()来直接确定哪个窗口在z轴上比另一个窗口高。
struct myEnumInfo
{
HWND hwnd1;
HWND hwnd2;
HWND hwndOnTop;
}; BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
{
myEnumInfo *info = (myEnumInfo*) lParam; // is one of the HWNDs found? If so, return it...
if ((hwnd == info->hwnd1) || (hwnd == info->hwnd2))
{
info->hwndOnTop = hwnd;
return FALSE; // stop enumerating
} return TRUE; // continue enumerating
} BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
myEnumInfo *info = (myEnumInfo*) lParam; // is one of the HWNDs found? If so, return it...
if ((hwnd == info->hwnd1) || (hwnd == info->hwnd2))
{
info->hwndOnTop = hwnd;
return FALSE;
} // enumerate this window's children...
EnumChildWindows(hwnd, &EnumChildProc, lParam); // is one of the HWNDs found? If so, return it...
if (info->hwndOnTop)
return FALSE; // stop enumerating return TRUE; // continue enumerating
} HWND WhichOneIsOnTop(HWND hwnd1, HWND hwnd2)
{
// is one of the HWNDs null? If so, return the other HWND...
if (!hwnd1) return hwnd2;
if (!hwnd2) return hwnd1; // is one of the HWNDs in the actual foreground? If so, return it...
HWND fgWnd = GetForegroundWindow();
if ((fgWnd) && ((fgWnd == hwnd1) || (fgWnd == hwnd2)))
return fgWnd; myEnumInfo info;
info.hwnd1 = hwnd1;
info.hwnd1 = hwnd2;
info.hwndOnTop = NULL; // are the HWNDs both children of the same parent?
// If so, enumerate just that parent...
HWND parent = GetAncestor(hwnd1, GA_PARENT);
if ((parent) && (GetAncestor(hwnd2, GA_PARENT) == parent))
{
EnumChildWindows(parent, &EnumChildProc, (LPARAM)&info);
}
else
{
// last resort!! Enumerate all top-level windows and their children,
// looking for the HWNDs wherever they are...
EnumWindows(&EnumWindowsProc, (LPARAM)&info);
} return info.hwndOnTop;
}
win32-使用EnumWindows比较两个窗口的Z轴的更多相关文章
- 在C#中调用Win32函数EnumWindows枚举所有窗口。
原文 http://www.cnblogs.com/mfm11111/archive/2009/06/30/1514322.html 开发旺旺群发软件,难点及重要技术点分析(一) 一. ...
- WPF中两个窗口的互斥
这里所讲的互斥是两个窗口不同时存在,打开一,只显示一:点一相关按钮显示二,关闭一:关闭二,显示一. 窗口一: history winResult winChoice = new winResult() ...
- [Mac]如何让两个窗口各占半个屏幕
OS X中的拆分视图El Capitan或更高版本允许您使用两个应用程序填充Mac屏幕,而无需手动移动和调整窗口大小. 进入拆分视图 按住 窗口左上角的全屏按钮 . 当您按住按钮时,窗口会缩小,您可 ...
- (亲测解决)每次打开excel文件都会出现两个窗口,一个是空白的sheet1,另一个是自己的文档
版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/sinat_34104446/article/details/80210424 一.问题描述每次打开Exce ...
- 实现两个窗口通信方法-postMessage
此方案可解决跨域而且跨Iframe,而且http和https之间的交互 首先来看一下基本的语法 otherWindow.postMessage(message, targetOrigin, [tran ...
- GetParent、SetParent、MoveWindow - 获取、指定父窗口和移动窗口,IsChild - 判断两个窗口是不是父子关系
提示: SetParent 应该 Windows.SetParent, 因为 TForm 的父类有同名方法. //声明: {获取父窗口句柄} GetParent(hWnd: HWND): HWND; ...
- py+selenium IE 用driver.close()却把两个窗口都关了【已解决】
环境:py3 selenium unittest 测试浏览器:IE10 目标:在单个文件中,有多个用例,执行完A用例,由于打开了新的窗口,必须关闭新的窗口,才不会影响下一条用例的执行. 问题:按例 ...
- QT两个窗口相互切换
信号(signals)与槽(slots)是QT重要机制,例子使用了C++11 lambda表达式进行了信号与槽的连接. 实现两个窗口通过点击按钮完成互相切换,注意子窗口只能发送信号,不能处理,所有信号 ...
- 关于Qt5(1)-- 两个窗口互相切换的例子
<QT Creator快速入门>这本书有一章介绍model和modeless的概念时,用到了两个窗口互相切换的例子.但是原文对该例子的说明非常模糊不清,现整理如下. 1,要求:登陆界面.主 ...
- WIN32 API ------ 最简单的Windows窗口封装类
1 开发语言抉择 1.1 关于开发Win32 程序的语言选择 C还是C++ 在决定抛弃MFC,而使用纯Win32 API 开发Window桌面程序之后,还存在一个语言的选择,这就是是否使用C++.C+ ...
随机推荐
- [转帖]Kafka之ISR机制的理解
Kafka对于producer发来的消息怎么保证可靠性? 每个partition都给配上副本,做数据同步,保证数据不丢失. 副本数据同步策略 和zookeeper不同的是,Kafka选择的是全部完成同 ...
- 【转帖】一篇文章让你了解灾备指标:RPO与RTO
RTO 和 RPO 都是企业灾难恢复(Disaster Recovery, DR)需要考虑的关键指标,这两个指标可以用来指导企业来制定合适的业务系统服务或数据的恢复方案. RPO(Recovery P ...
- 如何查看服务器的Raid缓存等配置的情况
摘要 最近总遇到同一批机器的IO不一样的情况. 感觉可能跟硬件设备和Raid卡的设置不一样有关系. 所以今天学习研究了下storcli的命令. 希望能够进行一些数据的收集. Storcli简介 sto ...
- zabbix基于容器化在UOS1050E上面的安装与使用
前言 想着能够监控一下操作系统的日志. 因为国产化的需求, 所以我这边使用了UOS1050E 安装zabbix时多次提示缺少php-json 或者是缺少一些libevent等组件. 自己尝试进行解决发 ...
- [官网]Apache Log4j2 最新版安全提示 2.17.0
https://logging.apache.org/log4j/2.x/ 最近一个周的时间 log4j2 从 2.14 跃升到了2.17 还在不停的升级 安全问题正是焦头烂额 free softwa ...
- 【字符串,哈希】【Yandex】Yandex7736
2023.6.30 Problem Link 定义一个串 \(S\) 是好的,当且仅当 \(S\) 可以不断消去相邻两个相同字符直至消空.给定一个长为 \(n\) 的字符串 \(s\),求有多少个有序 ...
- echarts 设置legend样式
设置legend样式 legend: { x: 'center', data: ['班车', '包车'], icon: "circle", // 这个字段控制形状 类型包括 cir ...
- 【JS 逆向百例】医保局 SM2+SM4 国产加密算法实战
关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途 ...
- Python 潮流周刊第 37 期(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- ngnix在linux安装并设置反向代理
一.nginx安装 1.安装Nginx依赖的环境 安装Nginx依赖的gcc的编译环境: yum install gcc-c++ Nginx的http模块需要使用pcre来解析正则表达式,需要安装pc ...