Void showprocessmodules (hwnd, dword pid)
{
System_info Si;
Memset (& Si, 0, sizeof (SI ));
Getsysteminfo (& Si );
If (pid = 0)
PID = getcurrentprocessid ();
DWORD lowaddr, highaddr;
Lowaddr = (DWORD) Si. lpminimumapplicationaddress;
Highaddr = (DWORD) Si. lpmaximumapplicationaddress;
Handle HDL = OpenProcess (process_query_information | process_vm_read,
False, pid );
If (HDL = NULL)
Return;
Char mapfilename [max_path] = "unknown ";
Char tempname [max_path];
DWORD nsize = sizeof (mapfilename );
DWORD mapaddr, mapaddrto = 0;
For (mapaddr = lowaddr; mapaddr {
Getmappedfilename (HDL, (lpvoid) mapaddr, mapfilename, nsize );
If (mapaddr <mapaddrto)
Continue;
If (strlen (mapfilename) = 0)
Continue;
For (mapaddrto = mapaddr; mapaddrto + = Si. dwpagesize)
{Getmappedfilename (HDL, (lpvoid) mapaddrto, tempname, nsize );
If (strcmp (tempname, mapfilename) = 0)
Continue;
Else
Break;
}
Wsprintf (tempname, "0x % p-0x % P: % s", mapaddr, mapaddrto, mapfilename );
Sendmessage (getdlgitem (hwnd, idc_list1), lb_addstring, 0, (lparam) tempname );
}
Closehandle (HDL );
Return;
}