cpp
//--------------------------------------------------------------------------- String GetExeNameByWnd(HWND hWnd) { HANDLE snp; PROCESSENTRY32 lppe; DWORD dwProcessId; String Result = ""; GetWindowThreadProcessId(hWnd, &dwProcessId); snp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); try{ lppe.dwSize = sizeof(lppe); if(Process32First(snp, &lppe)){ do{ if(lppe.th32ProcessID == dwProcessId){ Result = AnsiString(lppe.szExeFile); break; } }while(Process32Next(snp, &lppe)); } } __finally{ CloseHandle(snp); } return Result; } typedef BOOL (__stdcall *TP)(); BOOL CALLBACK GetWindows(HWND hWnd, TStrings* List) { String Name = GetExeNameByWnd(hWnd); if(Name != "" && List->IndexOf(Name) == - 1) List->Add(Name); return true; } TStringList *List = new TStringList; EnumWindows((TP)GetWindows, LPARAM(List));
Saludos.