C++ 控制台判断 EXE 是否正在运行

可以使用以下步骤判断 EXE 是否正在运行:

  1. 使用 CreateToolhelp32Snapshot 函数创建系统进程快照。
  2. 使用 Process32First 函数和 Process32Next 函数遍历系统进程快照,查找指定的 EXE 文件名。
  3. 如果找到了指定的 EXE 文件名,则说明该 EXE 正在运行;否则该 EXE 没有在运行。

下面是一个示例代码:

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

bool IsProcessRunning(const TCHAR* processName)
{
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hSnapshot == INVALID_HANDLE_VALUE)
    {
        return false;
    }

    PROCESSENTRY32 pe32;
    pe32.dwSize = sizeof(PROCESSENTRY32);

    if (!Process32First(hSnapshot, &pe32))
    {
        CloseHandle(hSnapshot);
        return false;
    }

    do
    {
        if (_tcsicmp(pe32.szExeFile, processName) == 0)
        {
            CloseHandle(hSnapshot);
            return true;
        }
    } while (Process32Next(hSnapshot, &pe32));

    CloseHandle(hSnapshot);
    return false;
}

int main()
{
    if (IsProcessRunning(TEXT("notepad.exe")))
    {
        printf("Notepad is running.\n");
    }
    else
    {
        printf("Notepad is not running.\n");
    }

    return 0;
}

代码解释:

  • IsProcessRunning 函数用于判断指定的 EXE 是否正在运行。
  • CreateToolhelp32Snapshot 函数用于创建系统进程快照。
  • Process32First 函数用于获取第一个进程信息。
  • Process32Next 函数用于获取下一个进程信息。
  • _tcsicmp 函数用于比较字符串,忽略大小写。

使用示例:

以上代码示例判断了 notepad.exe 是否正在运行。你可以修改 processName 参数来判断其他 EXE 是否正在运行。

注意:

  • 该代码仅适用于 Windows 操作系统。
  • 使用 CreateToolhelp32Snapshot 函数需要包含 tlhelp32.h 头文件。
  • 使用 tchar.h 头文件可以实现跨平台的字符串处理。
C++ 控制台判断 EXE 是否正在运行

原文地址: https://www.cveoy.top/t/topic/owGM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录