VC(win32)通过进程名杀死进程

#include "TlHelp32.h"

void CKillProcessDlg::OnBnClickedOk()
{
    // TODO: 在此添加控件通知处理程序代码
    //OnOK();
    UpdateData(TRUE);
    CString str;
    str.Format(TEXT("确定要杀死进程:%s?"),m_ProcessName.GetBuffer());
    //kill进程from名字  
    //创建进程快照(TH32CS_SNAPPROCESS表示创建所有进程的快照)  
    HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);  

    //PROCESSENTRY32进程快照的结构体  
    PROCESSENTRY32 pe;  

    //实例化后使用Process32First获取第一个快照的进程前必做的初始化操作  
    pe.dwSize = sizeof(PROCESSENTRY32);  


    //下面的IF效果同:  
    //if(hProcessSnap == INVALID_HANDLE_VALUE)   无效的句柄  
    if(!Process32First(hSnapShot,&pe))  
    {  
        return ;  
    }  

    //将字符串转换为小写  
    m_ProcessName.MakeLower();  

    //如果句柄有效  则一直获取下一个句柄循环下去  
    while (Process32Next(hSnapShot,&pe))  
    {  

        //pe.szExeFile获取当前进程的可执行文件名称  
        CString scTmp = pe.szExeFile;  


        //将可执行文件名称所有英文字母修改为小写  
        scTmp.MakeLower();  

        //比较当前进程的可执行文件名称和传递进来的文件名称是否相同  
        //相同的话Compare返回0  
        if(!scTmp.Compare(m_ProcessName))  
        {  
            if(MessageBox(
                str,
                TEXT("Are you sure ?"),
                MB_YESNO) != IDYES)
            {
                return;
            }

            //从快照进程中获取该进程的PID(即任务管理器中的PID)  
            DWORD dwProcessID = pe.th32ProcessID;  
            //OpenProcess 函数用来打开一个已存在的进程对象,并返回进程的句柄。
            HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE,FALSE,dwProcessID);  
            ::TerminateProcess(hProcess,0);  //杀死进程
            CloseHandle(hProcess);  
            return;  
        }  
        scTmp.ReleaseBuffer();  
    }  
    m_ProcessName.ReleaseBuffer();  
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xingoo, 一个梦想做发明家的程序员

开启服务和停止服务

Start函数用于开启服务 1 初始化状态变量 2 创建监听套接字 3 加载使用扩展API函数 4 创建完成端口对象 5 建立监听套接字和完成端口对象间的关联 ...

2688
来自专栏一只程序汪的自我修养

手把手教你用.NET Core写爬虫

自从上一个项目58HouseSearch从.NET迁移到.NET core之后,磕磕碰碰磨蹭了一个月才正式上线到新版本。

25612
来自专栏影子

springboot添加多数据源连接池并配置Mybatis

2563
来自专栏Java帮帮-微信公众号-技术文章全总结

Web-第二十一天 Web商城实战一【悟空教程】

public class BaseServlet extends HttpServlet {

1364
来自专栏高性能服务器开发

windows完成端口(二)

系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) ...

36211
来自专栏社区的朋友们

Node 架构从三层到 N 层,实现代码重用和解耦

三层架构通常意义上是将整个业务应用划分为:控制层、业务逻辑层以及数据访问层,三层架构在 Java Web 项目中很常见,那么这种架构能否运用在 Node 项目中...

1.5K1
来自专栏高性能服务器开发

windows完成端口(六)

系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) ...

2894
来自专栏安恒网络空间安全讲武堂

XCTF-赛博地球杯工业互联网安全大赛web部分题解

0x01工控云管理系统项目管理页面解析漏洞 题目首先给出了源码: `http://47.104.156.32:20007/view-source.php` 关键...

3138
来自专栏24K纯开源

OpenProcess打开进程返回错误的问题

问题描述       项目中需要做一个小功能:能够查看系统中当前正在运行的进程的内存信息,如内存块类型、分配状态、访问权限等。如下图所示: ?       需要...

26710
来自专栏Google Dart

Flutter 构建完整应用手册-联网 顶

从大多数应用程序获取互联网上的数据是必要的。 幸运的是,Dart和Flutter为这类工作提供了工具!

872

扫码关注云+社区