rendered paste body// EnumWindows.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <Windows.h>#include <iostream>#include <fstream>#include <psapi.h>#include <tchar.h>using namespace std;wofstream outfile;int CheckProcessName(DWORD processID, TCHAR *checkProcessName){ TCHAR processName[MAX_PATH]; // Get a handle to the process. HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID); // Get the process name. if (NULL != hProcess) { HMODULE hMod; DWORD cbNeeded; if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded)) GetModuleBaseName(hProcess, hMod, processName, sizeof(processName)/sizeof(TCHAR)); } CloseHandle(hProcess); return !_wcsnicmp_l(processName, checkProcessName, MAX_PATH, 0);}BOOL CALLBACK EnumChildProc( HWND hwnd, LPARAM lParam ){ TCHAR buf[512]; outfile << L" -- ImgBurn --"; for (int i = 0; i < lParam; i++) outfile << L"-"; outfile << L"> "; if (SendMessageTimeout(hwnd, WM_GETTEXT, sizeof(buf)/sizeof(TCHAR), (LPARAM)(void*)buf, SMTO_ABORTIFHUNG, 1000, 0)) outfile << buf; outfile << endl; EnumChildWindows(hwnd, EnumChildProc, lParam + 1); return 1;}BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam){ TCHAR buf[512]; DWORD pid; if (GetWindowThreadProcessId(hwnd, &pid) && pid == lParam) { outfile << L" -- ImgBurn --> "; if (SendMessageTimeout(hwnd, WM_GETTEXT, sizeof(buf)/sizeof(TCHAR), (LPARAM)(void*)buf, SMTO_ABORTIFHUNG, 1000, 0)) outfile << buf; outfile << endl; EnumChildWindows(hwnd, EnumChildProc, 0); //return 0; } return 1;}int _tmain(int argc, _TCHAR* argv[]){ HWND hwnd; TCHAR buf[512]; DWORD pProcessIds[1024], foundID = 0; HMODULE hModules[1024]; DWORD pBytesReturned; TCHAR processName[MAX_PATH] = TEXT("ImgBurn.exe"); outfile.open ("test.txt"); EnumProcesses(pProcessIds, sizeof(pProcessIds), &pBytesReturned); DWORD numProcesses = pBytesReturned / sizeof(DWORD); for (int i = 0; i < numProcesses; i++) { if(pProcessIds[i] != 0) { if (CheckProcessName(pProcessIds[i], processName)) { foundID = pProcessIds[i]; break; } } } // get windows belonging to the process EnumWindows(EnumWindowsProc, foundID); outfile.close(); return 0;}