用c语言实现关闭软件进程

本文介绍了如何使用C语言实现关闭指定软件进程的功能。通过CreateToolhelp32Snapshot、Process32First、Process32Next和TerminateProcess等函数,查找并终止目标进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include<windows.h>
#include<string.h>
#include"tlhelp32.h"

/**********************************************
函数名:IsProcess
作用:  关闭软件进程
参数:  *path             软件名字符串,在最前面要加一个随意字符(不重复)
        SeaechCriteria    你加的那个字符
返回值:TRUE---成功
        FALSE--失败

**********************************************/

BOOL IsProcess(char *path,char SearchCriteria)

{
char tmp[MAX_PATH] = {0};
/**********************************
函数名:strrchr
作用:  在指定的字符串中查找某一字符第一次出现的位置
参数:  string   限定的字符串
       char     规定要查找的字符
返回值:成功--该字符到结束
       失败--FALSE
**********************************/
strcpy(tmp,strrchr(path,SearchCriteria)+1);
HANDLE hkernel32;
HANDLE hSnap;
PROCESSENTRY32 pe;
BOOL bNext;
pe.dwSize = sizeof(pe);
/**********************************
函数名:CreateToolhelp32Snapshot
作用:  获取进程信息,为其建立快照
参数:  dwFlag    TH32CS_SNAPPROCESS包含所有的进程
       th32ProcessID  0表示当前进程
返回值:INVALID_HANDLE_VALUE--调用失败
       hWnd---调用成功
**********************************/

hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

        /****************************************
函数名:Process32First
作用:  获取进程中的第一个进程句柄
参数:  hSnap     进程句柄
       pe        PROCESSENTRY32结构,用来储存进程信息
返回值:TRUE--成功
       FALSE--失败
****************************************/

bNext = Process32First(hSnap,&pe);
while(bNext)
{
/*****************************************
函数名:stricmp
作用:  比较字符串,不区分大小写
参数:  s1    
       s2
返回值:小于0 --- s1<s2
       等于0 --- s2=s1
大于0 --- s1>s1
*****************************************/
if(0 == stricmp(pe.szExeFile,tmp))
{
/***************************************************
函数名:OpenProcess
作用:  打开一个已经存在的进程对象
参数:  dwDesiredAccess   指定访问方法
       blnheritHandle    句柄是否能有子进程继承(TRUE--是)
dwProcessID       进程标识符
返回值:0---失败
       hWnd---进程句柄
***************************************************/
hkernel32 = OpenProcess(PROCESS_TERMINATE|PROCESS_CREATE_THREAD

|PROCESS_VM_WRITE|PROCESS_VM_OPERATION,1,pe.th32ProcessID);

                        /************************************************
函数名:TerminateProcess
作用:  终止指定进程和线程
参数:  hProcess    进程句柄
       uEixtCode   进程终止码
返回值:0---失败
       非零--成功
************************************************/

if(0 == TerminateProcess(hkernel32,0))
return FALSE;
return TRUE;

}

               /**********************************************
函数名:Process32Next
作用:  获取下一个进程的句柄
参数:   hSnap    句柄
       pe       PROCESSENTRY32结构,储存进程信息
返回值:TRUE---成功
       FALSE---失败
**********************************************/

bNext = Process32Next(hSnap,&pe);
}
CloseHandle(hSnap);
return FALSE;
}


int main(int argc,char* argv[])
{
int YN;
YN = IsProcess("ioCam.exe",'i');
if(FALSE == YN)
printf("没有找到相关进程!\n");
else
printf("已经关闭线程\n");
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值