1
我一直在试图获取Windows中的进程内存信息,我一直在关注微软文档,我已经得到了这段代码,但它似乎并不工作。它应该打印成功,但它根本不打印任何东西。我的调试告诉我,因为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;
}
尝试在'cout'中添加'<< flush;'或'<< endl;'这一行 - 它可能会打印出来,只是不会将其刷到控制台上。 – 2013-02-25 23:14:17
不是程序返回的问题2 – 2013-02-25 23:15:44
您的for循环可能会返回得太早。如果OpenProcess()返回0,那么如果你跳过'GetProcessMemoryInfo()'和'CloseHandle()'会怎么样? – 2013-02-25 23:15:48