#include <windows.h>
#include <tlhelp32.h>
#include <string.h>
#include <stdio.h>
using namespace std;
int KillProcess(DWORD Pid)
{
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, Pid);
if(hProcess == NULL)
{
printf("OpenProcess Error\n");
return 0;
}
if(TerminateProcess(hProcess,0))
{
printf("结束%s进程成功\n",Pid);
return 0;
}
else
{
printf("结束进程失败\n");
return 0;
}
}
int GetProcess()
{
char buff[1024] = {0};
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(pe32);
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot error\n");
return 0;
}
BOOL bProcess = Process32First(hProcessSnap, &pe32);
while(bProcess)
{
wsprintf(buff, "%s-----%d\r\n",pe32.szExeFile, pe32.th32ProcessID);
printf(buff);
memset(buff, 0x00, 1024);
bProcess = Process32Next(hProcessSnap, &pe32);
}
CloseHandle(hProcessSnap);
return 0;
}
int main(int argc, char* argv[])
{
if(argc == 2 && strcmp(argv[1], "list")==0)
{
GetProcess();
}
if(argc == 3 && strcmp(argv[1],"kill")==0)
{
KillProcess(atoi(argv[2]));
}
return 0;
}
用法:
- 列举进程 Process.exe list
- 杀死进程 Process.exe kill Pid