进程相关操作API
进程相关操作API
根据进程ID控制进程结束
OpenProcess来打开进程,获取进程的句柄。
TerminateProcess结束进程。
执行程序后进程消失。
遍历本机所有进程
利用快照机制,来检索本机中的所有进程,要是遍历线程或模块可以根据参数更换。
#include<Windows.h>
#include<TlHelp32.h>
#include<iostream>
int main()
{
//设置语言环境,解决中文无法显示的问题
setlocale(LC_ALL, "chs");
//打开一个进程
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,4848);//获取进程句柄
//结束指定进程
TerminateProcess(hProcess, 0);
//遍历进程
//第二个参数指定进程号只有在遍历堆和模块的时候才需要用到,需要指定进程的ID
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//拍摄指定进程以及这些进程使用的堆、模块和线程的快照。
//检索进程列表的第一个条目是否复制到缓冲区
PROCESSENTRY32W processEntry = { sizeof(PROCESSENTRY32W) };
BOOL bSucces = Process32FirstW(hSnapshot,&processEntry);//检索有关系统快照中遇到的第一个进程的信息。
if (bSucces)//如果进程列表的第一个条目已复制到缓冲区,则返回TRUE,否则返回FALSE。
{
do
{
printf("进程ID:%d,进程名称:%ls\n", processEntry.th32ProcessID, processEntry.szExeFile);
} while (Process32NextW(hSnapshot,&processEntry)); //如果进程列表的下一个条目已复制到缓冲区,则返回TRUE,否则返回FALSE。
}
return 0;
}