//先把工程unicode转成多字节字符
// 关闭进程B.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <windows.h> //为了用 DWORD OpenProcess 等
#include<tlhelp32.h> //为了调用 CreateToolhelp32Snapshot函数
BOOL myKillProcess(DWORD ProcessId);
DWORD GetProcessID(const char *ProcessName);
int main()
{
printf_s("进入main \n");
system("PAUSE");
DWORD killtarget; //目标进程ID
killtarget = GetProcessID("QQgamebeta2.exe");
printf_s("获取进程ID结束========================================= \n");
system("PAUSE");
myKillProcess(killtarget);
printf_s("结束进程结束========================================= \n");
system("PAUSE");
//::getchar();
return 0;
}
//下面是第一个网站找到的函数 但是用不了 需要进程的ID
BOOL myKillProcess(DWORD ProcessId)
{
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
if (hProcess == NULL)
{
printf_s("未找到进程 \n");
}
//return FALSE;
if (!TerminateProcess(hProcess, 0))
printf_s("未能关闭进程 \n");
//return FALSE;
return TRUE;
}
DWORD GetProcessID(const char *ProcessName)
{
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);
//获取进程快照
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot 调用失败.\n");
return -1;
}
//遍历进程快照,轮流显示每个进程的信息
BOOL bMore = ::Process32First(hProcessSnap, &pe32);
while (bMore)
{
printf_s("进程名称:%s \n", pe32.szExeFile);
printf_s("进程ID:%u \n", pe32.th32ProcessID);
if (lstrcmp(pe32.szExeFile, ProcessName) == 0) //相等返回0 小于返回负数 大于返回正数
{
printf_s("======找到进程ID 是%u ==========\n", pe32.th32ProcessID);
break;
}
bMore = ::Process32Next(hProcessSnap, &pe32);
}
//不要忘记清除掉snapshot对象
::CloseHandle(hProcessSnap);
return pe32.th32ProcessID;
}