21xrx.com
2024-12-22 22:04:19 Sunday
登录
文章检索 我的文章 写文章
C++如何判断系统进程
2023-07-02 17:10:00 深夜i     --     --
C++ 进程 系统 判断 管理

在进行 C++ 编程时,经常需要判断当前系统是否存在某些进程,如果存在则执行相应的操作,否则继续等待。本文将介绍如何使用 C++ 对系统进程进行判断。

在 C++ 中,我们可以使用系统库函数来获取系统中正在运行的进程信息。常用的获取进程信息的系统库函数有 GetProcessList、EnumProcesses 等。其中 EnumProcesses 是一个 Windows 系统专用函数,可以获取当前系统中所有进程的 ID,然后通过进程 ID 进一步获取进程详细信息。以下是一个简单的代码示例:


#include <windows.h>

#include <psapi.h>

bool isProcessExist(char* processName)

{

  DWORD aProcesses[1024], cbNeeded, cProcesses;

  unsigned int i;

  if (!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded))

    return 0;

  cProcesses = cbNeeded / sizeof(DWORD);

  for (i = 0; i < cProcesses; i++)

  {

    if (aProcesses[i] != 0)

    {

      HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, aProcesses[i]);

      if (hProcess != NULL)

      {

        HMODULE hMod;

        DWORD cbNeeded;

        if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded))

        {

          TCHAR szProcessName[MAX_PATH] = TEXT("");

          GetModuleBaseName(hProcess, hMod, szProcessName, sizeof(szProcessName) / sizeof(TCHAR));

          if (strcmp(szProcessName, processName) == 0)

          {

            CloseHandle(hProcess);

            return true;

          }

        }

        CloseHandle(hProcess);

      }

    }

  }

  return false;

}

该函数遍历系统中所有进程,依次获取每个进程的进程名,然后与指定的进程名进行比较。如果匹配成功,则说明该进程已经存在于系统中。如果匹配失败,则说明该进程不存在。使用该函数可以实现对指定进程的轮询,如果进程还存在,则继续执行特定操作,否则等待。

总之,在 C++ 中判断系统进程存在的方法是多种多样的,选择合适的函数进行操作可以大大提高程序的效率。在实际应用中要根据需求灵活选择,避免不必要的操作。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复