下面是我写的代码,各位大牛看看是不是获取进程内存的?
#include <windows.h>
#include <stdio.h>
#include <psapi.h>
#include <conio.h>
#include <tchar.h>
#include <pdh.h>
#include <iostream>
#include<TlHelp32.h>
#pragma comment ( lib , "Pdh.lib" )using namespace std;void PrintMemoryInfo( DWORD processID );int main()
{
int i = 0 ;
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(pe32);
HANDLE hProcessSnap =::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
wcout<<"CreateToolhelp32Snapshot 调用失败"<<endl;
return-1;
}
BOOL bMore = ::Process32First(hProcessSnap,&pe32);
while(bMore)
{
wcout<<"进程名称:"<<pe32.szExeFile<<endl;
wcout<<"进程ID:"<<pe32.th32ProcessID<<endl;
PrintMemoryInfo( pe32.th32ProcessID );
bMore = ::Process32Next(hProcessSnap,&pe32);
i++;
}
wcout<<"总进程数为:"<<i;
wcout<<"请按任意键结束…"<<endl;
getchar();
return 0;
}void PrintMemoryInfo( DWORD processID )
{
HANDLE hProcess;
PROCESS_MEMORY_COUNTERS pmc;
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
if (NULL == hProcess)
return; if ( GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)) )
{
//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 );
wcout<<"进程占用物理内存"<<pmc.WorkingSetSize/1024<<endl;
wcout<<"进程占用虚拟内存"<<pmc.PagefileUsage/1024<<endl;
} CloseHandle( hProcess );
}
#include <windows.h>
#include <stdio.h>
#include <psapi.h>
#include <conio.h>
#include <tchar.h>
#include <pdh.h>
#include <iostream>
#include<TlHelp32.h>
#pragma comment ( lib , "Pdh.lib" )using namespace std;void PrintMemoryInfo( DWORD processID );int main()
{
int i = 0 ;
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(pe32);
HANDLE hProcessSnap =::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
wcout<<"CreateToolhelp32Snapshot 调用失败"<<endl;
return-1;
}
BOOL bMore = ::Process32First(hProcessSnap,&pe32);
while(bMore)
{
wcout<<"进程名称:"<<pe32.szExeFile<<endl;
wcout<<"进程ID:"<<pe32.th32ProcessID<<endl;
PrintMemoryInfo( pe32.th32ProcessID );
bMore = ::Process32Next(hProcessSnap,&pe32);
i++;
}
wcout<<"总进程数为:"<<i;
wcout<<"请按任意键结束…"<<endl;
getchar();
return 0;
}void PrintMemoryInfo( DWORD processID )
{
HANDLE hProcess;
PROCESS_MEMORY_COUNTERS pmc;
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
if (NULL == hProcess)
return; if ( GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)) )
{
//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 );
wcout<<"进程占用物理内存"<<pmc.WorkingSetSize/1024<<endl;
wcout<<"进程占用虚拟内存"<<pmc.PagefileUsage/1024<<endl;
} CloseHandle( hProcess );
}
解决方案 »
- 关于王艳平《windows程序设计》小时钟实例代码的问题
- 为何我的这段代码用fillRect()填充的背景色不能正确显示??
- 我在ie中打开了一个网页,网页中有一个按钮。我想用代码模拟点击网页中的按钮,有办法吗?急!
- 想问有没有什么工具可以查到vc里面某个函数在那个.h文件里面?例如 cout在 iostream.h里面那样
- 奇怪的IP地址控件问题
- 老师让交“人事管理系统”作业,不知何处下手;大家能帮帮我吗?
- 请问vc6.0编译链接的问题
- 调用帮助文件问题!在线等
- 笔记本电脑上的滚动按钮与鼠标的滚轮有何不同?如何捕获其事件?
- 谁帮我解释一哈,VB工程属性中Vesion Compatibility的三个选项。---找分的就不用看乐0分:(
- 如何让VC2008程序在没有VC2008运行时库的机器上直接运行?
- htons与htonl函数功能一样吗?
f:\zwcode\nei\psapi.h(3) : fatal error C1083: Cannot open include file: 'psapi.h': No such file or directory
执行 cl.exe 时出错.
Creating browse info file...
BSCMAKE: error BK1506 : cannot open file '.\Debug\1.sbr': No such file or directory