#include <vector> BOOL TraversalChildWnd(OUT std::vector<HWND> &vec, IN HWND hParent) { vec.clear(); try { HWND hEnumWnd = GetWindow(hParent, GW_CHILD); while (hEnumWnd) { vec.push_back(hEnumWnd); hEnumWnd = GetNextWindow(hEnumWnd, GW_HWNDNEXT); } } catch (...) { OutputDebugStringA(__FUNCTION__); } return vec.size() > 0; } int main() { std::vector<HWND> vec; std::cout << TraversalChildWnd(vec, (HWND)0x003605A4) << endl; TCHAR sz[MAX_PATH] = { 0 }; DWORD dwPid = 0; for each (HWND var in vec) { printf("窗口%08X", var); GetWindowThreadProcessId(var, &dwPid); printf(" 进程%08X|%d", dwPid, dwPid); ::GetWindowText(var, sz, MAX_PATH * sizeof(TCHAR) - sizeof(TCHAR)); printf(" 标题%S", sz); memset(sz, 0, MAX_PATH * sizeof(TCHAR)); ::GetClassName(var, sz, MAX_PATH * sizeof(TCHAR) - sizeof(TCHAR)); printf(" 类名%S", sz); printf("\r\n"); } return 0; }
来源:https://www.cnblogs.com/dailycode/p/12464770.html