检查进程是否存在

Check for process existing

本文关键字:存在 是否 进程 检查      更新时间:2023-10-16

我写一段代码并使用MFC。我想检查进程是否存在。

例如:

if (myProcess.exe exists)
  do something
else
  do something else

我该怎么做?

谢谢

使用命名互斥锁:

在程序开始时:

HANDLE hMutex = CreateMutex(NULL, TRUE, "Your program name");
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
    // Process already running.
    CloseHandle(hMutex);
}
else
{
    // No process running.
}

在程序结束时:

if (hMutex)
{
    CloseHandle(hMutex);
    hMutex = NULL;
}
尝试在

包含 Psapi.h 后立即添加此行:

#pragma comment(lib, "psapi.lib")

也试试这个:

#pragma comment(lib, "kernel32.lib")

您必须枚举进程

例如

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682623%28v=vs.85%29.aspx

进程可以将其进程 ID 存储在文件中。正常退出时,删除该文件。

在下次启动时,进程可以查看文件是否存在,如果存在,它可以读取该文件,并检查该进程 ID。