
我们在写一些桌面控制相关的功能的时候,往往需要知道用户当前工作程序,这要求我们要先获取用户当前活动窗口的信息。
在 Windows API 里,有两个相似的函数可以来实现上述功能,它们分别是 GetForegroundWindow 和 GetActiveWindow 。
GetForegroundWindow 函数返回前台窗口(用户当前工作的窗口),系统分配给产生前台窗口的线程一个稍高一点的优先级;GetActiveWindow 函数可以获得与调用线程的消息队列相关的活动窗口的窗口句柄。
两者的区别在于:GetActiveWindow 只是获取当前程序(线程)中被激活的窗口;GetForegroundWindow 是获取当前系统中被激活的窗口。两个函数的级别不一样, 一个是线程级、一个是系统级。
我们用 GetForegroundWindow 和 GetWindowText 写一个循环获取当前活动窗口标题并输出的 Demo。
函数定义
1 |
HWND WINAPI GetForegroundWindow(void); |
1 2 3 4 5 |
int WINAPI GetWindowText( _In_ HWND hWnd, _Out_ LPTSTR lpString, _In_ int nMaxCount ); |
头文件
1 |
#include <Windows.h> |
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> #include <string> #include <locale> #include <Windows.h> using namespace std; int main(){ WCHAR buf[MAX_PATH] = { 0 }; setlocale(LC_ALL, ""); while (true){ GetWindowText(GetForegroundWindow(), buf, MAX_PATH); wcout << buf << endl; Sleep(2000); } return 0; } |
如无注明,均为原创。转载请注明: 转载自MITGAI`S THINKING
本文链接地址: Windows 下获取当前活动窗口信息
本文链接地址: Windows 下获取当前活动窗口信息
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
如果本文对您生活或工作产生了积极影响,那我非常高兴。
如果您愿意为文章的内容或想法提供支持,欢迎点击下边的捐赠按钮,资助作者创作更多高价值高品质的内容。
如果您愿意为文章的内容或想法提供支持,欢迎点击下边的捐赠按钮,资助作者创作更多高价值高品质的内容。