判断指定的进程或程序是否存在方法小结(vc等)

判断指定进程或程序是否存在的方法可以使用VC等编程语言来实现。下面是一个完整攻略:

明确需求

在编写代码之前,需要明确需求,即判断指定进程或程序是否存在。如果存在,则输出“存在”,否则输出“不存在”。

获取进程列表

获取进程列表是判断指定进程是否存在的关键步骤。可以通过以下方式获取系统中所有进程:

#include <windows.h>
#include <tlhelp32.h>

void EnumProcesses()
{
    HANDLE hProcessSnap;
    PROCESSENTRY32 pe32;

    hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //遍历进程快照
    if (INVALID_HANDLE_VALUE == hProcessSnap)
    {
        return;
    }

    pe32.dwSize = sizeof(PROCESSENTRY32);
    if (!Process32First(hProcessSnap, &pe32)) //获取第一个进程
    {
        CloseHandle(hProcessSnap);
        return;
    }

    do
    {
        //处理进程信息
    } while (Process32Next(hProcessSnap, &pe32)); //获取下一个进程

    CloseHandle(hProcessSnap);
}

判断进程是否存在

获取进程列表之后,可以根据进程的名称或进程ID来判断进程是否存在。具体代码可以使用以下方法实现:

#include <windows.h>
#include <tlhelp32.h>
#include <tchar.h>
#include <iostream>

bool IsProcessExist(TCHAR* processName)
{
    HANDLE hProcessSnap;
    PROCESSENTRY32 pe32;

    hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (INVALID_HANDLE_VALUE == hProcessSnap)
    {
        return false;
    }

    pe32.dwSize = sizeof(PROCESSENTRY32);
    if (!Process32First(hProcessSnap, &pe32))
    {
        CloseHandle(hProcessSnap);
        return false;
    }

    do
    {
        if (_tcsicmp(pe32.szExeFile, processName) == 0) //比较进程名称
        {
            CloseHandle(hProcessSnap);
            return true;
        }
    } while (Process32Next(hProcessSnap, &pe32));

    CloseHandle(hProcessSnap);
    return false;
}

示例说明

示例1

比较一个进程是否存在:

bool isExist = IsProcessExist(L"notepad.exe");
if (isExist)
{
    std::cout << "The process exists" << std::endl;
}
else
{
    std::cout << "The process does not exist" << std::endl;
}

示例2

比较一个进程是否存在,如果存在,就杀死该进程:

HANDLE hProcess;
TCHAR processName[] = L"notepad.exe";
bool isExist = IsProcessExist(processName);
if (isExist)
{
    hProcess = OpenProcess(PROCESS_TERMINATE, false, ProcessId);
    TerminateProcess(hProcess, 0);
    CloseHandle(hProcess);
}

以上是判断指定进程或程序是否存在方法的小结。通过获取进程列表和判断进程是否存在可以很容易地实现这个需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:判断指定的进程或程序是否存在方法小结(vc等) - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • 短视频脚本怎么写?短视频脚本写作技巧盘点

    短视频脚本怎么写?短视频脚本写作技巧盘点 什么是短视频脚本? 短视频脚本是指给短视频拍摄提供指导和约束的文本,包括了短视频中需要讲述的主要内容、场景、情节等。 短视频脚本写作技巧 1. 讲述一个故事 短视频不同于长视频,它需要在极短的时间内吸引观众的注意力,讲述一个吸引人的故事是非常重要的。编写短视频脚本时,需要在极短的时间内安排好完整的情节,让观众能够很快…

    C 2023年5月22日
    00
  • 【c语言】整数拆分

    将一个正整数n拆分成若干个正整数的和(至少两个数,n<=100)。 输入格式: 一个正整数n 输出格式: 若干行,每行一个等式(数与数之间要求非降序排列)。最后一行给出解的总个数 输入样例: 在这里给出一组输入。例如: 4   输出样例: 4=1+1+1+1 4=1+1+2 4=1+3 4=2+2 4   最后一行的4表示总共有4个解。   主要思路:…

    C语言 2023年4月18日
    00
  • gin解析json格式的数据出错的处理方案

    当使用 Gin 作为 Web 框架开发应用程序时,我们通常需要处理 JSON 格式的数据。然而在解析 JSON 数据时,可能会出现解析出错的情况。本文将介绍如何使用 Gin 解析 JSON 格式的数据出错的处理方案。 问题描述 当我们使用 Gin 解析 JSON 格式的数据时,如果 JSON 数据格式不正确,那么 Gin 会返回以下错误信息: { &quot…

    C 2023年5月23日
    00
  • JRSC是什么币种?JRSC币前景怎么样 详细介绍

    JRSC是什么币种? JRSC,全称为JRSwap Coin,是基于Tron网络发行的去中心化交易协议JRSwap的原生代币。JRSC币可以在JRSwap平台中扮演多种角色,例如支付交易手续费、获取平台收益以及参与平台治理等。 JRSC币的基本信息 发行时间:2021年3月 发行总量:10亿枚 发行机制:全量发行 JRSC币前景怎么样? JRSC作为JRSw…

    C 2023年5月23日
    00
  • C++代码规范之命名规则

    当编写C++代码时,规范的命名规则可以大大提升代码的可读性和可维护性。以下是C++代码命名规则的完整攻略。 命名规则的基本原则 命名应该清晰、简洁和准确地描述变量或函数的含义。 避免使用缩写或缩写的单词,因为它们可能会引起歧义。 命名应该避免使用与关键字相同的单词。 对于变量名,应该使用小写字母,并且使用下划线(_) 分隔单词。 对于函数名,应该使用驼峰命名…

    C 2023年5月23日
    00
  • C语言实现经典24点算法

    C语言实现经典24点算法 什么是24点算法 24点算法是一种数学游戏,通过将四个数字进行加、减、乘、除的运算,得出结果为24的算法。例如,给出4个数字6、6、2、1,可以通过计算得到 $6/(1-2/6)=24$,满足24点算法的要求。 实现步骤 读入四个数字 a、b、c、d,存入数组 num[] 中。 枚举 num[] 中的每一个数字,将其作为算式的第一个…

    C 2023年5月22日
    00
  • JVM指令的使用深入详解

    JVM指令的使用深入详解 Java虚拟机是Java语言的运行环境,负责执行Java应用程序并提供运行时环境。Java虚拟机具有跨平台性、安全性、动态性、扩展性等优势,是Java程序能够跨平台运行的重要保障。Java虚拟机执行Java应用程序时使用的是Java字节码,Java字节码使用类似汇编语言的JVM指令进行描述。Java虚拟机的JVM指令提供了丰富的操作…

    C 2023年5月22日
    00
  • C语言数组实现公交车管理系统

    下面是“C语言数组实现公交车管理系统”的完整攻略: 1. 设计思路 公交车管理系统需要对公交路线、车辆和乘客信息进行管理,我们可以设计三个数组来存储这些信息: bus_line[]数组:存储公交路线信息,每个元素表示一条公交路线,包括路线编号、起始站点、终点站点和票价等信息。 bus[]数组:存储车辆信息,每个元素表示一辆车,包括车牌号、所属路线、座位数和已…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部