C++封装一个函数可以在windows环境中获取进程列表
时间: 2024-01-22 13:19:06 浏览: 89
在 Windows 环境中,获取进程列表可以使用 Windows API 函数 `EnumProcesses` 和 `OpenProcess` 来实现。下面是一个简单的 C++ 封装函数示例:
```cpp
#include <windows.h>
#include <vector>
std::vector<DWORD> GetProcessList()
{
std::vector<DWORD> processList;
DWORD processes[1024], cbNeeded;
if (EnumProcesses(processes, sizeof(processes), &cbNeeded))
{
const int count = cbNeeded / sizeof(DWORD);
for (int i = 0; i < count; i++)
{
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processes[i]);
if (hProcess != NULL)
{
TCHAR szProcessName[MAX_PATH];
if (GetModuleFileNameEx(hProcess, NULL, szProcessName, MAX_PATH))
{
processList.push_back(processes[i]);
}
CloseHandle(hProcess);
}
}
}
return processList;
}
```
上述代码中,`EnumProcesses` 函数用于获取当前运行的所有进程 ID,然后使用 `OpenProcess` 函数打开每个进程,获取进程的模块文件名,如果成功获取到文件名,则将该进程 ID 加入到返回的进程列表中。
使用方法如下:
```cpp
std::vector<DWORD> processList = GetProcessList();
for (auto processId : processList)
{
// 处理每个进程
}
```
阅读全文