/*
VS2010编译通过
*/
#include<Windows.h>
#include<TlHelp32.h>
#include<stdio.h>
int KillProcess(DWORD Pid)
{
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid);
if(hProcess==NULL)
{
puts("OpenProcess Error!");
return 1;
}
if(TerminateProcess(hProcess,0))
{
puts("结束进程成功!");
return 0;
}
else
{
puts("结束进程失败!");
return 1;
}
CloseHandle(hProcess);
}
int GetProcess()
{
TCHAR buf[1024];
PROCESSENTRY32 pe32;
pe32.dwSize=sizeof(pe32);
HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
puts("CreateToolhelp32Snapshot Error!");
return 1;
}
BOOL bProcess=Process32Next(hProcessSnap,&pe32);
while(bProcess)
{
wprintf(TEXT("%-50s%10d\n"),pe32.szExeFile,pe32.th32ProcessID);
bProcess=Process32Next(hProcessSnap,&pe32);
}
CloseHandle(hProcessSnap);
return 0;
}
int KillAllNamed(TCHAR str[])
{
int cnt=0;
TCHAR buf[1024];
PROCESSENTRY32 pe32;
pe32.dwSize=sizeof(pe32);
HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
puts("CreateToolhelp32Snapshot Error!");
return 1;
}
BOOL bProcess=Process32Next(hProcessSnap,&pe32);
while(bProcess)
{
if(!lstrcmp(str,pe32.szExeFile))
{
wprintf(TEXT("%-50s%10d\n"),pe32.szExeFile,pe32.th32ProcessID);
KillProcess(pe32.th32ProcessID);
cnt++;
}
bProcess=Process32Next(hProcessSnap,&pe32);
}
CloseHandle(hProcessSnap);
if(cnt==0)
puts("Not found!");
else
printf("%d processes have been Terminated!\n",cnt);
return 0;
}
int main(int argc,char *argv[])
{
DWORD Cmd,Pid;
TCHAR ProcName[50];
while(1)
{
// system("cls");
puts("[1] List\n[2] Kill by PID\n[3] Kill all by name\n[0] Exit\n");
scanf("%d",&Cmd);
if(Cmd==0)
break;
switch(Cmd)
{
case 1:
GetProcess();
break;
case 2:
puts("Input Pid to kill:");
scanf("%d",&Pid);
KillProcess(Pid);
break;
case 3:
puts("Input the name of process to kill:");
wscanf(TEXT("%s"),ProcName);
KillAllNamed(ProcName);
break;
default:
puts("Illegal Command!");
break;
}
system("pause");
}
return 0;
}
结束进程
最新推荐文章于 2021-10-29 20:53:23 发布