用Dve-c++5.11在Windows环境下创建一个控制台应用程序View_Process,输出系统中正在运行的进程信息,包括进程号、进程所运行的程序名、进程的启动时间。完整代码加注释
时间: 2024-11-23 07:41:10 浏览: 6
在DVe-C++5.11环境中创建一个控制台应用`View_Process`,用于获取并显示系统中正在运行的进程信息,可以使用Windows API函数如CreateToolhelp32Snapshot和Process32First等。以下是完整的示例代码,包含必要的注释:
```cpp
#include <iostream>
#include <windows.h> // 包含Windows API头文件
// 定义结构体保存进程信息
struct PROCESSENTRY32 {
DWORD dwSize;
DWORD cntUsage;
TCHAR szExeFile[260];
DWORD th32ProcessID;
TCHAR szImageFileName[260];
DWORD th32ParentProcessID;
DWORD pcPriClassBase;
DWORD dwFlags;
STARTUPINFO si; // 为了获取启动时间,需要STARTUPINFO结构
};
int main() {
// 初始化结构体大小
PROCESSENTRY32 pe = { sizeof(PROCESSENTRY32), 0 };
// 创建进程快照,TH32CS_SNAPPROCESS表示只获取进程信息
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapShot == INVALID_HANDLE_VALUE) {
std::cerr << "Failed to create process snapshot." << std::endl;
return 1;
}
// 设置结构体以开始遍历进程
pe.dwSize = sizeof(PROCESSENTRY32);
// 遍历所有进程
while (Process32Next(hSnapShot, &pe)) {
// 输出进程信息
std::cout << "Process ID: " << pe.th32ProcessID << std::endl;
std::cout << "Program Name: " << pe.szExeFile << std::endl;
// 由于Windows API没有直接提供获取启动时间的方法,我们可以模拟一下,这里假设si.lpDesktop是一个临时字段
// 真实情况需要查看具体的Windows API文档或第三方库来获取准确的启动时间
std::cout << "Start Time: Not available in standard Windows API (use a third-party library or API for accurate information)" << std::endl;
// 清空STARTUPINFO结构以便下一次迭代
ZeroMemory(&pe.si, sizeof(STARTUPINFO));
}
// 关闭进程快照
CloseHandle(hSnapShot);
return 0;
}
```
阅读全文