#include<windows.h>
#include<stdio.h>
#include <tlhelp32.h> //声明快照函数的头文件
int main()
{
PROCESSENTRY32 pe32;
// 在使用这个结构之前,先设置他结构的大小
pe32.dwSize=sizeof(pe32);
// 给系统内的所以的进程怕一个快照
HANDLE hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot 调用失败/n");
return -1;
}
//遍历进程的快照,轮流显示每个进程的信息
BOOL bMore=::Process32First(hProcessSnap,&pe32);
while(bMore)
{
printf(" 进程的名字:%s/n",pe32.szExeFile);
printf(" 进程的ID浩:%u/n/n",pe32.th32ProcessID);
bMore=::Process32Next(hProcessSnap,&pe32);
}
// 不要忘记清楚snapshot 对象
::CloseHandle(hProcessSnap);
return 0;
}
2.4 进程控制
createToolhelp32Snapshot 用于获取系统内指定进程的快照,也可以获取被这些进程
使用的堆,模块,和线程的快照。函数的具体用法是。
HANDLE WINAPI CreateToolhelp32Snapshot() //查阅 msdn
::process32First();
关于PROCESSENTRY32;结构的定义
终止当前进程
终止进程也就是结束程序的执行,让他从内存中卸载。进程终止的原因可能有4种:
1.主线程的入口函数返回。
2.进程中一个线程调用了ExitProcess 函数。
3.此进程中的所有线程都结束了。
4.其他进程中的一个线程调用了TerminateProcess 函数