C++遍历所有当前应用的HWND和标题

#include<Windows.h>
#include<iostream>

#ifdef _WIN32
#include <process.h>
#else
#include <unistd.h>
#endif


#include <wchar.h>
#include <stdio.h>  
#include <tchar.h>  
#include <string.h> 


using namespace std;




int Pnum = 0, Cnum;//父窗口数量,每一级父窗口的子窗口数量  

				   //---------------------------------------------------------  
				   //EnumChildWindows回调函数,hwnd为指定的父窗口  
				   //---------------------------------------------------------  
BOOL CALLBACK EnumChildWindowsProc(HWND hWnd, LPARAM lParam)
{
	char WindowTitle[100] = { 0 };
	Cnum++;
	::GetWindowText(hWnd, WindowTitle, 100);
	printf("--|%d :%s\n", Cnum, WindowTitle);
	return true;
}


BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
	if (GetParent(hWnd) == NULL ) 
	{
		//&& IsWindowVisible(hWnd)  //如果判断是否顶层窗口并且可见加上该条件  
		Pnum++;
		Cnum = 0;
		char WindowTitle[100] = { 0 };
		DWORD dwPID = NULL;
		GetWindowThreadProcessId(hWnd, &dwPID);
		printf("-------------------------------------------\n");
		printf("%d: %s  hwnd:%x  pid:%x \n", Pnum, WindowTitle, hWnd, dwPID);
		//EnumChildWindows(hWnd, EnumChildWindowsProc, NULL); //获取父窗口的所有子窗口  
	}
	return true;
}


int main()
{
	int iPid = (int)_getpid();
	std::cout << "The process id is: " << hex << iPid << std::endl;

	EnumWindows(EnumWindowsProc, NULL);
	cin.get();
	return 0;

}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值