holyya.com
2025-09-04 14:28:46 Thursday
登录
文章检索 我的文章 写文章
如何在c++中判断进程是否存在?
2023-07-07 05:34:59 深夜i     --     --
c++ 判断 进程 存在

在C++中,使用Windows API函数可以查询是否存在某个进程。以下是一个检查进程是否存在的示例代码:


#include <windows.h>

bool IsProcessRunning(const wchar_t* 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;

  }

  bool found = false;

  do {

    if (_wcsicmp(pe32.szExeFile, processName) == 0)

    

      found = true;

      break;

    

  } while (Process32Next(hSnapshot, &pe32));

  CloseHandle(hSnapshot);

  return found;

}

这个函数使用了Windows API的CreateToolhelp32Snapshot和Process32First函数来遍历所有正在运行的进程,并比较进程名称是否匹配。如果找到了匹配的进程,那么就返回true;否则返回false。

使用这个函数的示例代码:


int main()

{

  const wchar_t* processName = L"notepad.exe";

  bool isRunning = IsProcessRunning(processName);

  if (isRunning)

    std::wcout << processName << L" is running.\n";

  else

    std::wcout << processName << L" is not running.\n";

  return 0;

}

这个示例代码会检查是否存在名为“notepad.exe”的进程并输出结果。如果存在,则输出“notepad.exe is running.”;否则输出“notepad.exe is not running.”。

当然,如果您要判断的进程名称是从命令行读入的,或者需要查询多个进程的运行状态,那么可以在循环中调用IsProcessRunning函数。

  
  

评论区

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