#include #include #include static BOOL CALLBACK FunkyCallback(HWND hWnd, LPARAM lParam ){ char b[100]; RECT Rect; DWORD pid; if(!GetParent(hWnd)){ GetWindowText(hWnd, b, 99); GetWindowRect(hWnd,&Rect); GetWindowThreadProcessId(hWnd, &pid); printf("%li: %s left:%li top:%li\n",pid,b,Rect.left,Rect.top); } return TRUE; } int main(int argc, char ** argv){ if (argc > 1){ HANDLE hFile = CreateFile( "proc.dmp", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); DWORD procID = atoi(argv[1]); HANDLE hProc = OpenProcess( PROCESS_ALL_ACCESS, FALSE, procID ); fprintf(stderr,"Dumping hProc %p\n",hProc); if (!MiniDumpWriteDump( hProc, procID, hFile, MiniDumpNormal, NULL, NULL, NULL )) fprintf(stderr,"didn't work :(\n"); CloseHandle(hFile); } else { EnumChildWindows(GetDesktopWindow(),FunkyCallback, 0); fprintf(stderr,"Usage: %s procID\n",argv[0]); } }