#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--失败
****************************************/
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---失败
非零--成功
************************************************/
return FALSE;
return TRUE;
}
/**********************************************
函数名:Process32Next
作用: 获取下一个进程的句柄
参数: hSnap 句柄
pe PROCESSENTRY32结构,储存进程信息
返回值:TRUE---成功
FALSE---失败
**********************************************/
}
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;
}