2. 在Windows环境下创建一个控制台应用程序View_Process,输出系统中正在运行的进程信息,包括进程号、进程所运行的程序名、进程的启动时间。
时间: 2024-11-12 18:35:29 浏览: 16
C#得到Windows的进程列表内容
要在Windows环境下创建一个控制台应用程序View_Process,你需要使用Windows API中的Process APIs来获取进程信息。以下是一个简单的步骤说明以及关键的C语言代码片段:
1. **包含头文件**:首先,你需要包含`windows.h`头文件,其中包含了所需的API定义。
```c
#include <windows.h>
```
2. **定义全局变量**:声明一个`STARTUPINFO`结构体和一个`PROCESS_INFORMATION`结构体,用于存储启动新进程所需的信息。
```c
STARTUPINFO si;
PROCESS_INFORMATION pi;
```
3. **获取进程信息**:编写一个函数,如GetProcInfo(),它会接收一个进程ID(PID),然后调用CreateProcess函数打开进程并获取其相关信息。
```c
DWORD WINAPI GetProcInfo(DWORD pid, LPTSTR szCmdLine)
{
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
si.wShowWindow = SW_HIDE;
if (!CreateProcess(NULL, szCmdLine, NULL, NULL, FALSE,
0, NULL, NULL, &si, &pi))
{
// 处理错误
return GetLastError();
}
// 获取进程名
TCHAR szExeName[MAX_PATH];
DWORD len = GetModuleFileName(pi.hProcess, szExeName, MAX_PATH);
// ...
// 获取启动时间
FILETIME creationTime;
if (!GetProcessTimes(pi.hProcess, &creationTime, NULL, NULL, NULL))
{
// 处理错误
}
SYSTEMTIME st;
FiletimeToSystemTime(&creationTime, &st);
// 将SYSTEMTIME转换为字符串
// ...
// 关闭进程句柄
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
// 返回进程信息
return 0;
}
```
4. **主程序循环**:在一个循环中,你可以不断请求用户输入进程ID,然后调用上述函数来获取并显示该进程的信息。
5. **输出结果**:在函数内部,记得正确地处理和格式化获取到的数据,将其输出到控制台。
6. **清理内存**:不要忘记释放之前分配的内存,特别是对于`STARTUPINFO`和`PROCESS_INFORMATION`结构。
请注意,这只是一个简化的示例,实际应用可能需要额外的错误处理和更多的细节。此外,由于权限限制,直接读取其他进程的信息可能会受限。
阅读全文