2个回答
2013-09-13
展开全部
基本思路:
1. 用Process32First+Process32Next枚举所有进程。
2. 对枚举的进程取程序名,比较是不是要关掉的程序。
3. 如是,调用TerminateProcess()结束它。
有的程序一启动就不止一个进程,所以即使关掉一个,也继续枚举。
用法例:kp iexplore.exe 关闭IE进程(所有IE浏览器的窗口都关掉)
/********************************************
文件名:kp.c
程序名:kp.exe
用法例:kp iexplore.exe
********************************************/
#include <windows.h>
#include <tlhelp32.h>
int KillMyProcess(char *exeName)
{
int rc = 0;
HANDLE hSysSnapshot = NULL;
PROCESSENTRY32 proc;
hSysSnapshot = CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 );
if ( hSysSnapshot == (HANDLE)-1 ) return 1;
proc.dwSize = sizeof(proc);
if ( Process32First ( hSysSnapshot, &proc ) ) {
do {
if (stricmp(proc.szExeFile, exeName)==0) {
HANDLE Proc_handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc.th32ProcessID);
if (Proc_handle==NULL || !TerminateProcess(Proc_handle, 0)) rc = 1;
else rc = 0;
}
} while ( Process32Next ( hSysSnapshot, &proc ) );
}
CloseHandle ( hSysSnapshot );
return rc;
}
int main(int argc, char *argv[])
{
if (argc>1) {
printf("Kill %s....\n", argv[1]);
if (KillMyProcess(argv[1])==0) printf(" --- Process is killed.\n");
else printf(" --- Process is not killed \n" ) ;
}
return 0;
}
1. 用Process32First+Process32Next枚举所有进程。
2. 对枚举的进程取程序名,比较是不是要关掉的程序。
3. 如是,调用TerminateProcess()结束它。
有的程序一启动就不止一个进程,所以即使关掉一个,也继续枚举。
用法例:kp iexplore.exe 关闭IE进程(所有IE浏览器的窗口都关掉)
/********************************************
文件名:kp.c
程序名:kp.exe
用法例:kp iexplore.exe
********************************************/
#include <windows.h>
#include <tlhelp32.h>
int KillMyProcess(char *exeName)
{
int rc = 0;
HANDLE hSysSnapshot = NULL;
PROCESSENTRY32 proc;
hSysSnapshot = CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 );
if ( hSysSnapshot == (HANDLE)-1 ) return 1;
proc.dwSize = sizeof(proc);
if ( Process32First ( hSysSnapshot, &proc ) ) {
do {
if (stricmp(proc.szExeFile, exeName)==0) {
HANDLE Proc_handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, proc.th32ProcessID);
if (Proc_handle==NULL || !TerminateProcess(Proc_handle, 0)) rc = 1;
else rc = 0;
}
} while ( Process32Next ( hSysSnapshot, &proc ) );
}
CloseHandle ( hSysSnapshot );
return rc;
}
int main(int argc, char *argv[])
{
if (argc>1) {
printf("Kill %s....\n", argv[1]);
if (KillMyProcess(argv[1])==0) printf(" --- Process is killed.\n");
else printf(" --- Process is not killed \n" ) ;
}
return 0;
}
2013-09-13
展开全部
好像是exit(0);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询