C++ 枚举所有窗口

#include "windows.h"
#include "iostream"
using namespace std;

BOOL CALLBACK EnumWindowsProc(
	HWND hwnd, 
	LPARAM lParam)
{

	TCHAR caption[200];
	memset(caption, 0, sizeof(caption));
	::GetWindowText(hwnd, caption, 200);

	if(strcmp(caption, ""))
		cout<<caption<<endl;

	return TRUE;

}


int main()
{
	EnumWindows(EnumWindowsProc, NULL);

	return 0;
}
如果需要参数可以通过EnumWindowsProc的第二个参数传到回调函数里

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您是在Windows操作系统下进行开发,可以使用以下方法来枚举所有窗口: 1. 使用EnumWindows函数来枚举所有顶级窗口。该函数的原型为: ```c++ BOOL EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam ); ``` 其中,lpEnumFunc是一个回调函数,用于处理枚举到的每个窗口,lParam是一个用户参数,可以传递给回调函数。 2. 在回调函数中,可以使用GetWindowText函数来获取窗口标题,使用GetClassName函数来获取窗口类名,使用IsWindowVisible函数来判断窗口是否可见。 3. 如果要获取子窗口,可以使用EnumChildWindows函数来枚举指定父窗口的所有子窗口。该函数的原型为: ```c++ BOOL EnumChildWindows( HWND hWndParent, WNDENUMPROC lpEnumFunc, LPARAM lParam ); ``` 其中,hWndParent是父窗口句柄,lpEnumFunc和lParam的含义与EnumWindows函数相同。 下面是一个示例代码,可以枚举所有顶级窗口,并输出每个窗口的标题和类名: ```c++ #include <Windows.h> #include <iostream> using namespace std; BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { char title[256]; char className[256]; GetWindowText(hwnd, title, sizeof(title)); GetClassName(hwnd, className, sizeof(className)); if (IsWindowVisible(hwnd)) { cout << "Title: " << title << endl; cout << "Class: " << className << endl; cout << "-----------------------" << endl; } EnumChildWindows(hwnd, EnumWindowsProc, lParam); return TRUE; } int main() { EnumWindows(EnumWindowsProc, NULL); return 0; } ``` 该示例代码会输出所有可见窗口的标题和类名,包括子窗口。您可以根据需要进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值