typedef BOOL (_stdcall *ENUMPROCESSES)(DWORD* pProcessIds,DWORD cb,DWORD* pBytesReturned);
typedef BOOL (_stdcall *ENUMPROCESSMODULES)(HANDLE hProcess,HMODULE* lphModule,DWORD cb,LPDWORD lpcbNeeded);
typedef DWORD (_stdcall *GETMODULEFILENAMEEX)(HANDLE hProcess,HMODULE hModule,LPTSTR lpFilename,DWORD nSize );
HMODULE hModule = LoadLibrary("psapi.dll");
if(hModule == NULL)
return;
ENUMPROCESSES pEnumProcesses = (ENUMPROCESSES)GetProcAddress(hModule, "EnumProcesses");
ENUMPROCESSMODULES pEnumProcessModules = (ENUMPROCESSMODULES)GetProcAddress(hModule, "EnumProcessModules");
GETMODULEFILENAMEEX pGetModuleFileNameEx = (GETMODULEFILENAMEEX)GetProcAddress(hModule, "GetModuleFileNameExA");
ListView_DeleteAllItems(hProcessList1);
HMODULE hMods[1024];
HANDLE hProcess;
DWORD cbNeeded;
unsigned int i;
char szModName[MAX_PATH];
DWORD pids= 388;
int k=0;
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION |PROCESS_VM_READ,FALSE,atoi(pid));
if( hProcess && pEnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded))
{
for ( i = 0; i <=(cbNeeded / sizeof(HMODULE)); i++ )
{
if(pGetModuleFileNameEx( hProcess, hMods[i], szModName,sizeof(szModName)))
{
char name[1024]={0},addr[32]={0};
strcpy(name,szModName);
wsprintf(addr,"0x%08x",hMods[i]);
}
}
}
else
{
CloseHandle(hProcess);
FreeLibrary(hModule);
return;
}
CloseHandle(hProcess);
FreeLibrary(hModule);
return;