显示进程信息
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <windows.h>
#include <TlHelp32.h>
#include <Psapi.h>
void PrintMemoryInfo( DWORD processID );
int main()
{
PROCESSENTRY32 pe32;
pe32.dwSize=sizeof(pe32);
HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hProcessSnap==INVALID_HANDLE_VALUE)
{
printf("CreateSnapShot Fail/n");
return -1;
}
BOOL bMore=Process32First(hProcessSnap,&pe32);
while (bMore)
{
printf("进程名称:%s/n",pe32.szExeFile);
printf("进程ID: %u/n",pe32.th32ProcessID);
printf("进程的父进程ID:%u/n",pe32.th32ParentProcessID);
printf("进程的线程数:%u/n/n",pe32.cntThreads);
bMore=Process32Next(hProcessSnap,&pe32);
}
DWORD dwProccessID;
scanf("%u",&dwProccessID);
PrintMemoryInfo(dwProccessID);
return 0;
}
//
//函数功能:打印进程的相关信息
//函数参数:processID, 进程号
//函数返回:无
//
void PrintMemoryInfo( DWORD processID )
{
HANDLE hProcess;
PROCESS_MEMORY_COUNTERS pmc;
char charA=char(3);
// Print the process identifier.
printf( "/nProcess ID: %u/n", processID );
// Print information about the memory usage of the process.
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
if (NULL == hProcess)
return;
if ( GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)) )
{
printf( "/tPageFaultCount: %d/n", pmc.PageFaultCount );
printf( "/tPageFaultCount: 0x%08X/n", pmc.PageFaultCount );
printf( "/tPeakWorkingSetSize: 0x%08X/n",
pmc.PeakWorkingSetSize );
printf( "/tWorkingSetSize: 0x%08X/n", pmc.WorkingSetSize );
printf( "/tQuotaPeakPagedPoolUsage: 0x%08X/n",
pmc.QuotaPeakPagedPoolUsage );
printf( "/tQuotaPagedPoolUsage: 0x%08X/n",
pmc.QuotaPagedPoolUsage );
printf( "/tQuotaPeakNonPagedPoolUsage: 0x%08X/n",
pmc.QuotaPeakNonPagedPoolUsage );
printf( "/tQuotaNonPagedPoolUsage: 0x%08X/n",
pmc.QuotaNonPagedPoolUsage );
printf( "/tPagefileUsage: 0x%08X/n", pmc.PagefileUsage );
printf( "/tPeakPagefileUsage: 0x%08X/n",
pmc.PeakPagefileUsage );
}
CloseHandle( hProcess );
}