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

相关文章

  • cmake跨平台构建工具的学习笔记

    CMake跨平台构建工具的学习笔记 简介 CMake是一个跨平台的构建工具,可以自动生成Makefile、Visual Studio等工程文件,支持多种编程语言,包括C、C++、Java等。CMake语法简单、易读、易写,适合中小型项目的构建。 安装CMake 在官网 https://cmake.org/download/ 上下载适合自己系统的CMake安装…

    C 2023年5月23日
    00
  • C++常用函数之XML JSON格式转换问题

    关于C++常用函数之XML JSON格式转换问题,我可以提供以下的攻略: 1. 概述 XML和JSON都是常用的数据交换格式,这两种格式各有优劣,应用场景也不同。在实际开发中,我们可能会遇到需要将XML数据转换为JSON格式或将JSON数据转换为XML格式的需求,那么本文就将会针对这个问题,介绍如何使用C++常用函数来进行这类转换操作。 2. XML格式转J…

    C 2023年5月22日
    00
  • 软件测试面试题(小结)

    那么来详细讲解一下“软件测试面试题(小结)”的完整攻略。 简述 本文主要是对软件测试面试题(小结)的内容进行详细的讲解和讨论。软件测试作为软件开发流程中的一个重要环节,在面试过程中也是经常被问到的一个话题。在本文中,我们将从面试的准备、常见的面试题、回答技巧等几个方面展开讨论。 面试准备 在进行软件测试的面试之前,应该先认真准备。以下几个方面是需要注意的: …

    C 2023年5月22日
    00
  • C++程序中main(int argc, char *argv[])函数的参数意义

    下面是对“C++程序中main(int argc, char *argv[])函数的参数意义”的完整讲解。 main函数的定义 在C++程序中,main函数是程序的入口,用于在程序开始时运行。main函数有两个参数,其定义形式如下: int main(int argc, char *argv[]); 其中, argc:表示程序运行时命令行参数的个数(包括程序…

    C 2023年5月30日
    00
  • C语言详细分析常见字符串函数与模拟实现

    C语言详细分析常见字符串函数与模拟实现攻略 在C语言中,字符串是一种常见的数据类型。为了对字符串进行处理,C语言提供了许多常规的字符串函数,如strcpy、strcat、strlen、strcmp等等。本攻略将详细介绍这些常用的字符串函数以及如何进行模拟实现。 常见的字符串函数 strcpy char *strcpy(char *dest, const ch…

    C 2023年5月23日
    00
  • JSON对象转化为字符串详解

    JSON对象转化为字符串详解 在JavaScript编程中,我们经常需要处理JSON对象,并且将JSON对象转化成字符串类型以进行网络传输、文件存储等操作。本文将详细讲解如何将JSON对象转化为字符串类型。 为什么需要将JSON对象转化为字符串类型? 在JavaScript中,JSON对象是一种轻量级的数据交换格式。该格式由对象、属性和值组成,可以被所有支持…

    C 2023年5月23日
    00
  • C++中各种可调用对象深入讲解

    C++中可调用对象的深入讲解 什么是可调用对象? 在C++中,可调用对象是指可以被调用、执行的实体。常见的可调用对象包括函数、类成员函数、lambda表达式等。C++中的可调用对象都可以作为函数参数或返回值进行传递。 函数指针作为可调用对象 在C++中,函数指针也是可调用对象之一。定义函数指针的方式如下: int (*funcPtr)(int, int); …

    C 2023年5月22日
    00
  • C程序 复利

    C程序 复利 使用攻略 介绍 C程序 复利 是一款基于C编写的计算复利的小工具。可以根据输入的本金、利率和时间计算出复利的本金、利息和总额。使用该工具可以方便快捷地计算不同本金、不同利率、不同时间下复利的本息和总额。 安装 下载C程序 复利 的源代码。 确认本地已经安装了C编译工具,如gcc、clang等。 打开终端,切换到C程序 复利 的源代码所在目录下。…

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