C/C++结束指定进程

180it 2020-11-02 PM 2313℃ 0条

C/C++结束指定进程
起因:ZZ室友最近沉迷吃鸡,没日没夜的和他的小伙伴开黑,严重影响到了寝室静谧,美好,热爱“学习”的氛围!突发奇想,给他电脑发个程序,当吃鸡吃到一半的时候,自动结束吃鸡进程,岂不美哉,哈哈,纯属说笑,并不会真的搞事情,开机自动运行没有加上,但是这个需求在脑海中形成想实现,正好巩固一下win32编程,废话不多,上代码!

#include"stdafx.h"
#include <stdio.h>  
#include <windows.h>  
#include <TlHelp32.h>  
#include <stdlib.h>
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )    //隐藏运行的控制台窗口
  
int Kill_Pro(TCHAR Kill_Name[])        //功能函数。参数是进程名
{
    while(1){        //死循环为了一直获取当前系统正在运行的进程
    // 为进程的所有线程拍个快照  
    HANDLE hSnapshort = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);  
    if( hSnapshort==INVALID_HANDLE_VALUE )  
    {  
        printf("CreateToolhelp32Snapshot调用失败!\n");  
        return -1;  
    }  
  
    // 获得线程列表  
    PROCESSENTRY32 stcProcessInfo;  
    stcProcessInfo.dwSize = sizeof(stcProcessInfo);  
    BOOL  bRet = Process32First(hSnapshort, &stcProcessInfo);  
    while (bRet)  
    {  
        if(strcmp(stcProcessInfo.szExeFile,Kill_Name)==0)
        {    
            Sleep(2000);        //等待时间
            HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE,FALSE,stcProcessInfo.th32ProcessID);    //获取进程句柄
            ::TerminateProcess(hProcess,0);    //结束进程
            CloseHandle(hProcess);        
        }
        bRet = Process32Next(hSnapshort, &stcProcessInfo);  
    }  
  
    CloseHandle(hSnapshort);  
 
    }
    return 0;
}
 
int main()   //主函数
{  
    Kill_Pro("editplus.exe");
    return 0;  
}

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

C/C++结束指定进程