win32-GetActiveWindow和GetForegroundWindow
最近被这两个api搞得有点晕,故查阅了相关的资料。
这篇文章解释的很好:https://devblogs.microsoft.com/oldnewthing/20081006-00/?p=20643
测试代码:
case WM_LBUTTONDOWN:
{
HWND h1 = GetFocus();
HWND h2 = GetActiveWindow();
HWND h3 = GetForegroundWindow(); HWND h4 = SetActiveWindow(child_hwnd);
HWND h5 = GetFocus();
HWND h6 = GetActiveWindow();
}
当点击一个普通的win32窗口时,h1,h2,h3都返回相同的句柄。 如果在HWND h2 = GetActiveWindow();处打上断点,运行代码后,vs窗口会自动变成前景窗口,那么h1,h2仍然相同,即返回生成的win32窗口句柄,h3将变为vs的窗口句柄。
小结: GetActiveWindow是获取当前调用线程里的active window,GetForegroundWindow是获取全局的前景窗口。如果活动窗口不是本线程的,GetActiveWindow会返回NULL的。
一般情况下,我们用GetForegroundWindow会更多一些。
对于h4,h5,h6,就是使用SetActiveWindow函数,将焦点转为线程内的另一个窗口,我这里是将焦点转到子窗口上,然后h5,h6返回子窗口的窗口句柄,h4返回的是之前的活动窗口句柄。
win32-GetActiveWindow和GetForegroundWindow的更多相关文章
- pywin32获得tkinter窗口句柄,并在上面绘图
想实现用win32 API在tkinter窗口上画图,那么应该先获得tkinter窗口的句柄hwnd,然后再获得tkinter的设备hdc.尝试了FindWindow(),GetActiveWindo ...
- windows窗口分析,父窗口,子窗口,所有者窗口
(本文尝试通过一些简单的实验,来分析Windows的窗口机制,并对微软的设计理由进行一定的猜测,需要读者具备C++.Windows编程及MFC经验,还得有一定动手能力.文中可能出现一些术语不统一的现象 ...
- SetForegroundWindow
SetForegroundWindow 函数功能:该函数将创建指定窗口的线程设置到前台,并且激活该窗口.键盘输入转向该窗口,并为用户改各种可视的记号.系统给创建前台窗口的线程分配的权限稍高于其他线程. ...
- Microsoft Win32 to Microsoft .NET Framework API Map
Microsoft Win32 to Microsoft .NET Framework API Map .NET Development (General) Technical Articles ...
- Win32控制台中使用定时器的方法
在MFC中用OnTimer()函数就可以很方便的实现定时事件,但在Win32控制台工程中没有消息循环,MSDN里也不推荐把SetTimer()用在Console Applications里. 同理,在 ...
- C#[Win32&WinCE&WM]应用程序只能运行一个实例:MutexHelper
前言 在开发应用程序时,通常只让程序运行一个实例.所以,就要判断程序是否已经运行. 下面是我自己在项目中使用到,封装好的帮助类.有 普通的 C# 应用程序 和 Windows CE 和 Windows ...
- java.lang.UnsatisfiedLinkError: %1 不是有效的 Win32 应用程序。
JNA 调用 dll 库时,保错: ///////////////// 通过 JNA 引入 DLL 库 //////////// /** * ID_FprCap.dll 负责指纹的采集, 指纹仪的初始 ...
- 初次认识 C# win32 api
第一次接触win32api,刚开始的时候有点迷迷糊糊的. Windows API 就是windows应用程序接口. win api向上就是windows应用程序,向下就是windows操作系统核心. ...
- [老文章搬家] [翻译] 深入解析win32 crt 调试堆
09 年翻译的东西. 原文见: http://www.nobugs.org/developer/win32/debug_crt_heap.html 在DeviceStudio的Debug编译模式下, ...
- Virus.Win32.Virlock.b分析
0x00 样本说明 分析样本是被0b500d25f645c0b25532c1e3c9741667的样本感染得到.感染前的文件是Tcpview.exe,一款windows网络连接查看工具. 感染前后文件 ...
随机推荐
- 多种数据库获取最近一天记录的SQL整理
多种数据库获取最近一天记录的SQL整理 背景 纯粹当笔记. 数据库种类太多,记不住,每次都需要现查,效率实在是太低了 将获取最近一天记录的SQL整理好 方便后续直接his用 简单总结 Oracle + ...
- [转帖]goproxy 使用说明
Go 版本要求 建议您使用 Go 1.13 及以上版本, 可以在这里下载最新的 Go 稳定版本. 配置 Goproxy 环境变量 Bash (Linux or macOS) export GOPROX ...
- [转帖]集群监控之 —— ipmi操作指南
https://www.cnblogs.com/gaoyuechen/p/8506930.html 这两天,配置了一堆500来个节点的大型集群,被ipmi的问题困扰了一天半,到下午16:40,终于解决 ...
- 【转帖】ChatGPT重塑Windows!微软王炸更新:操作系统全面接入,Bing也能用插件了
https://cloud.tencent.com/developer/article/2291078?areaSource=&traceId= 金磊 丰色 西风 发自 凹非寺 量子位 | 公 ...
- [转帖]比 Python 快 35000 倍!LLVM&Swift 之父宣布全新编程语言 Mojo:编程被颠覆了
https://www.infoq.cn/article/GFfVLVpkIGOcKYB85Opb "Mojo 可能是近几十年来最大的编程语言进步." 近日,由 LLVM 和 Sw ...
- SQLSERVER 标准版与企业版的版本标识区别
1. windows 标准版 sqlserver 标准版 2. Windows 数据中心版 sqlserver 企业版 3. Win10 之后 服务器版本缩减的很厉害 只有两个版本了 如图示 4. ...
- Stream流处理快速上手最佳实践
一 引言 JAVA1.8得益于Lambda所带来的函数式编程,引入了一个全新的Stream流概念Stream流式思想类似于工厂车间的"生产流水线",Stream流不是一种数据结构, ...
- 【分享一个工具】根据 /metrics 路径下的文本信息,自动生成包含所有 metrics 的 grafana 报表
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 在做某个服务对应的 grafana 监控报表的时候发现,一 ...
- 【VictoriaMetrics源码阅读】vm中仿照RoaringBitmap的实现:uint64set
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu 公众号:一本正经的瞎扯 正文 VictoriaMetrics中使用uint64类型来表示一个Me ...
- HEVC扩展备用安装方法
这个玩意微软商店免费但是下架了,购买需要RMB 安装 转到 https://store.rg-adguard.net/ 在左侧的下拉菜单选择"ProductId" 把链接中&quo ...