判断指定的进程或程序是否存在方法小结(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日

相关文章

  • 在c和c++中实现函数回调

    在C和C++中实现函数回调,需要用到函数指针;函数指针是将函数的入口地址存放在指针变量中,可以通过指针来间接调用函数。 以下是实现函数回调的步骤: 声明一个函数指针类型,以便后续能实现复用: c++typedef void(*CallbackFunction)(int); 上面的代码定义了一个函数指针类型CallbackFunction,该函数指针可以指向一…

    C 2023年5月23日
    00
  • C++快速幂与大数取模算法示例

    C++快速幂与大数取模算法示例 本文主要介绍C++中实现快速幂算法和大数取模算法的示例以及相关代码。快速幂算法可以很好地解决指数较大的幂运算问题,大数取模算法则可以在计算过程中避免数值过大而发生的溢出错误。 快速幂算法原理 快速幂算法是指通过对指数进行二进制分解后,根据分解结果按照乘幂的顺序计算幂运算结果。其本质上是一种分治策略,可以大大减少指数较大情况下的…

    C 2023年5月22日
    00
  • VSCode各语言运行环境配置方法示例详解

    下面我会为你详细讲解 “VSCode各语言运行环境配置方法示例详解”的完整攻略。 概述 在使用 Visual Studio Code 进行编程开发时,不同的语言需要不同的运行环境。本篇攻略将会详细讲解如何配置 VSCode 的运行环境。 步骤 步骤一:安装与配置相应的编程语言环境 首先确定你需要使用的编程语言,然后安装相应的运行环境。以 Node.js 为例…

    C 2023年5月23日
    00
  • C++泛型编程基本概念详解

    C++泛型编程基本概念详解 什么是泛型编程 泛型编程是一种编程范式,它的特点是写出的代码可以操作多种数据类型,而不是针对特定的数据类型编写特定的代码。泛型编程的目的是提高代码的复用性,减少代码量,提高代码的可读性和可维护性。 泛型编程的好处 泛型编程提高了代码的复用性,可以更加简洁和高效地完成编程任务。使用泛型编程技术编写的程序通常比使用直接写特定类型代码的…

    C 2023年5月23日
    00
  • c语言实现http下载器的方法

    C语言实现HTTP下载器的方法 本篇攻略将介绍如何使用C语言实现一个HTTP下载器。 HTTP是一种应用层协议,常用于传输超文本。HTTP协议中使用TCP/IP协议进行数据传输,同时也支持加密传输(HTTPS)。本篇攻略将通过C语言编程实现HTTP协议中的GET方法,从而实现HTTP下载器。 准备工作 在开始之前,我们需要准备以下内容: 了解HTTP协议的基…

    C 2023年5月23日
    00
  • vscode执行npm时的一些错误以及处理办法

    VSCode执行npm的一些错误以及处理办法 在使用VSCode开发过程中,经常需要使用npm来安装和管理依赖包,但有时候我们在执行npm命令时,可能会遇到一些错误,为了帮助大家更好地使用VSCode,下面给大家介绍一些常见的npm错误及解决办法。 1. npm install命令超时 在执行npm install的时候,可能会出现超时错误,此时我们需要设置…

    C 2023年5月23日
    00
  • .NET(C#)连接各类数据库代码-集锦

    . 前言 本文将为大家介绍如何使用.NET (C#)代码连接各种不同类型的数据库。无论是关系型数据库,还是NoSQL数据库,本文都将为您提供一条清晰明了的攻略。本文例举了连接MySQL和MongoDB两个数据库的示例,以供读者参考和学习。 . 连接MySQL数据库 连接MySQL数据库可以使用MySQL官方提供的Connector/NET组件,该组件提供了与…

    C 2023年5月22日
    00
  • VScode如何调用KEIL-MDK

    一、安装插件 在VSCode中搜索并安装名为”Cortex-Debug”的插件。 安装插件后,按下F1键或Ctrl+Shift+P打开命令面板,在搜索框中输入”Cortex-Debug: Install GDB”,安装GDB。 二、安装Keil-MDK和ARM公司提供的软件包 下载并安装Keil-MDK,网址:https://www.keil.com/dem…

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