BOOL ListProcesses()
{
HANDLE hProcessSnap = 0;
HANDLE hToken;
PROCESSENTRY32 pe32 = {0};
DWORD dwPriorityClass;
BOOL bGotModule = FALSE;
HANDLE hProcess;
MODULEENTRY32 me32 = {0};
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcessSnap == INVALID_HANDLE_VALUE)
return FALSE;
pe32.dwSize = sizeof(PROCESSENTRY32);
if(Process32First(hProcessSnap,&pe32))
{
do
{
ZeroMemory(&me32,sizeof(MODULEENTRY32));
hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);
bGotModule = GetProcessModule(pe32.th32ProcessID, pe32.th32ModuleID, &me32, sizeof(MODULEENTRY32));
dwPriorityClass = GetPriorityClass(hProcess);
cout<<"File name: "<<pe32.szExeFile<<endl;
cout<<"Path: "<<me32.szExePath<<endl;
CloseHandle(hProcess);
}while(Process32Next(hProcessSnap,&pe32));
}
return bGotModule;
}
BOOL GetProcessModule(DWORD dwPID, DWORD dwModuleID, LPMODULEENTRY32 lpMe32, DWORD cbMe32)
{
BOOL bRet = FALSE;
BOOL bFound = FALSE;
HANDLE hModuleSnap = NULL;
MODULEENTRY32 me32 = {0};
ZeroMemory(&me32,sizeof(MODULEENTRY32));
hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);
if (hModuleSnap == INVALID_HANDLE_VALUE)
return (FALSE);
me32.dwSize = sizeof(MODULEENTRY32);
if (Module32First(hModuleSnap, &me32))
{
do
{
if (me32.th32ProcessID == dwPID)
{
CopyMemory (lpMe32, &me32, cbMe32);
bFound = TRUE;
}
}
while (!bFound && Module32Next(hModuleSnap, &me32));
bRet = bFound;
}
else
bRet = FALSE;
CloseHandle(hModuleSnap);
return bRet;
}