View difference between Paste ID: j3UJKKRT and 6C6iSKZw
SHOW: | | - or go back to the newest paste.
1
#include <windows.h>
2
#include <dbghelp.h>
3
#include <stdio.h>
4
static BOOL CALLBACK FunkyCallback(HWND hWnd, LPARAM lParam ){
5
    char b[100]; RECT Rect;
6
    DWORD pid;
7
    if(!GetParent(hWnd)){
8
        GetWindowText(hWnd, b, 99); GetWindowRect(hWnd,&Rect);
9
        GetWindowThreadProcessId(hWnd, &pid);
10
        printf("%li: %s left:%li top:%li\n",pid,b,Rect.left,Rect.top);
11
    }   return TRUE;
12
}
13
int main(int argc, char ** argv){
14
    if (argc > 1){
15
        HANDLE hFile = CreateFile(
16
            "proc.dmp",
17
            GENERIC_READ | GENERIC_WRITE,
18
            FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
19
            NULL,
20
            CREATE_ALWAYS,
21
            FILE_ATTRIBUTE_NORMAL,
22
            NULL
23
        );
24
        DWORD procID = atoi(argv[1]);
25
        HANDLE hProc = OpenProcess(
26
            PROCESS_ALL_ACCESS,
27
            FALSE,
28
            procID
29
        );
30
        fprintf(stderr,"Dumping hProc %p\n",hProc);
31
        if (!MiniDumpWriteDump(
32
            hProc,
33
            procID,
34
            hFile,
35
            MiniDumpNormal,
36
            NULL,
37
            NULL,
38
            NULL
39
        )) fprintf(stderr,"didn't work :(\n");
40
        CloseHandle(hFile);
41
    } else { 
42
        EnumChildWindows(GetDesktopWindow(),FunkyCallback, 0);
43
        fprintf(stderr,"Usage: %s procID\n",argv[0]);
44
    }
45
}