#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;
}