www.pudn.com > GetProcessList1.rar > GetProcessList.cpp


// GetProcessList.cpp : Defines the entry point for the console application. 
// 
 
#include "stdafx.h" 
#include  
#include  
#include  
 
bool GetProcessModule (DWORD dwPID,DWORD dwModuleID,LPMODULEENTRY32 lpMe32,DWORD cbMe32) 
{ 
	bool bRet = FALSE; 
	bool bFound = FALSE; 
	HANDLE hModuleSnap = NULL; 
	MODULEENTRY32 me32 = {0}; 
	// 
	hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,dwPID); 
	if(hModuleSnap == (HANDLE)-1) 
		return (FALSE); 
	// 
	me32.dwSize = sizeof(MODULEENTRY32); 
	// 
	// 
	if(Module32First(hModuleSnap,&me32)) 
	{ 
		do 
		{ 
			if(me32.th32ModuleID == dwModuleID) 
			{ 
				CopyMemory(lpMe32,&me32,cbMe32); 
				bFound = TRUE; 
			} 
		} 
		while(! bFound&&Module32Next(hModuleSnap,&me32)); 
		bRet = bFound; 
		// 
	} 
	else 
		bRet = FALSE; 
	CloseHandle(hModuleSnap); 
	return(bRet); 
} 
 
bool GetProcessList() 
{ 
	HANDLE hProcessSnap = NULL; 
	bool bRet = FALSE; 
	PROCESSENTRY32 pe32 = {0}; 
	// 
	hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); 
	if(hProcessSnap == (HANDLE)-1) 
		return (FALSE); 
	// 
	pe32.dwSize = sizeof(PROCESSENTRY32); 
	// 
	if(Process32First(hProcessSnap,&pe32)) 
	{ 
		DWORD dwPriorityClass; 
		bool bGotModule = FALSE; 
		MODULEENTRY32 me32 = {0}; 
		do 
		{ 
			bGotModule = GetProcessModule(pe32.th32ProcessID,pe32.th32ModuleID,&me32,sizeof(MODULEENTRY32)); 
			if(bGotModule) 
			{ 
				HANDLE hProcess; 
				// 
				hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID); 
				dwPriorityClass = GetPriorityClass(hProcess); 
				CloseHandle(hProcess); 
				// 
				printf("\nPriority Class Base\t%d\n",pe32.pcPriClassBase); 
				printf("PID\t\t\t%x\n",pe32.th32ProcessID); 
				printf("Thread Count\t\t%d\n",pe32.cntThreads); 
				printf("Module Name\t\t%s\n",me32.szModule); 
				printf("Full Path\t\t%s\n\n",me32.szExePath); 
			} 
		} 
		while(Process32Next(hProcessSnap,&pe32)); 
		bRet = TRUE; 
	} 
	else 
		bRet = FALSE; 
	// 
	CloseHandle(hProcessSnap); 
	return(bRet); 
} 
int main(int argc, char* argv[]) 
{ 
	GetProcessList(); 
	return 0; 
}