对以上代码进行修改,能够生成进程信息列表,每隔1s刷新
时间: 2024-01-11 14:02:11 浏览: 26
好的,以下是修改后的代码,可以实现每隔1秒刷新一次进程信息列表:
```cpp
#include <iostream>
#include <windows.h>
#include <tlhelp32.h>
#include <psapi.h>
#include <thread>
#include <chrono>
using namespace std;
void printProcessList() {
while (true) {
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);
BOOL bMore = Process32First(hSnapshot, &pe32);
cout << "Process List:" << endl;
while (bMore) {
cout << "Process Name: " << pe32.szExeFile << endl;
cout << "PID: " << pe32.th32ProcessID << endl;
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pe32.th32ProcessID);
if (hProcess) {
PROCESS_MEMORY_COUNTERS pmc;
if (GetProcessMemoryInfo(hProcess, &pmc, sizeof(pmc))) {
cout << "Working Set Size: " << pmc.WorkingSetSize / 1024 << "KB" << endl;
}
CloseHandle(hProcess);
}
bMore = Process32Next(hSnapshot, &pe32);
}
CloseHandle(hSnapshot);
this_thread::sleep_for(chrono::seconds(1)); // 暂停1秒
system("cls"); // 清空屏幕
}
}
int main() {
printProcessList();
return 0;
}
```
这段代码使用了 C++11 中的 `thread` 和 `chrono` 库,通过开启一个新的线程来循环打印进程信息,并在每次打印之前暂停1秒钟。同时在每次打印之前调用 `system("cls")` 清空屏幕,实现进程信息的刷新。