我一直在尝试在 Windows 中获取进程内存信息,并且我一直在关注 Microsoft 文档,并且我已经获得了这段代码,但是它 似乎不起作用。它应该打印成功,但它根本不打印任何东西。我的调试告诉我这是因为 hProcess = null, 但我不明白为什么。这是我当前的代码
#include <windows.h>
#include <stdio.h>
#include <psapi.h>
#include<iostream>
using namespace std;
int main()
{
DWORD aProcesses[1024], cbNeeded, cProcesses;
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
{
return 1;
}
cProcesses = cbNeeded / sizeof(DWORD);
for (int i = 0; i < cProcesses; i++ )
{
int processID = aProcesses[i];
HANDLE hProcess;
PROCESS_MEMORY_COUNTERS pmc;
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID );
if (NULL == hProcess)
return 2;
if ( GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)) )
{
cout<<"SUCCEEDED";
}
CloseHandle( hProcess );
}
return 0;
}
最佳答案
您可能没有权限读取某些(特权系统)进程的内存。如果从 OpenProcess
返回 NULL 句柄,请检查 GetLastError
。
一般来说,检查和处理 Win32 错误条件是一种很好的做法,即使 API“通常”适合您也是如此。
关于c++ - 获取进程内存信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15078342/