【进程处理】1,枚举进程,关闭进程

1,代码如下


#include "stdafx.h"
#include <Windows.h>
#include "tlhelp32.h"

int main(int argc, char* argv[])
{
	PROCESSENTRY32 pe;
	DWORD id=0;
	HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
	pe.dwSize=sizeof(PROCESSENTRY32);
	if(!Process32First(hSnapshot,&pe))
		return 1;
	while(1)
	{
		pe.dwSize=sizeof(PROCESSENTRY32);
		if(Process32Next(hSnapshot,&pe)==FALSE)
			break;
		//在这里处理这个枚举到的进程,比如是qq或飞秋就关闭它
		if((0 == stricmp(pe.szExeFile,"feiq.exe")) || (0 == stricmp(pe.szExeFile,"qq.exe")))
		{
			HANDLE hProcess = OpenProcess(PROCESS_TERMINATE,FALSE,pe.th32ProcessID);
			if(hProcess != NULL)
			{
				TerminateProcess(hProcess,0);
			}
		}
		
	}
	CloseHandle(hSnapshot);
	
	return 0;
}

2,说明

需要头文件 tlhelp32.h。

主要看下这个PROCESSENTRY32结构,它包含了一个进程的相关信息:

typedef struct tagPROCESSENTRY32
{
    DWORD   dwSize;
    DWORD   cntUsage;
    DWORD   th32ProcessID;          // this process
    ULONG_PTR th32DefaultHeapID;
    DWORD   th32ModuleID;           // associated exe
    DWORD   cntThreads;
    DWORD   th32ParentProcessID;    // this process's parent process
    LONG    pcPriClassBase;         // Base priority of process's threads
    DWORD   dwFlags;
    CHAR    szExeFile[MAX_PATH];    // Path
} PROCESSENTRY32;


一般用到的就是:

th32ProcessID :进程ID

th32ParentProcessID: 父进程ID

szExeFile: 可执行文件的名称


另外,OpenProcess函数可以通过进程ID得到进程句柄,TerminateProcess 通过进程句柄可以关闭进程。

但要注意,如果想关闭进程,使用OpenProcess获取句柄时第一个参数需要包含 PROCESS_TERMINATE 权限。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆枫゛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值