如何检查 win32 exe 文件是否已运行?(使用 win32 API 代码)

How to check if a win32 exe file is already running? (use win32 API code)

本文关键字:win32 运行 使用 代码 API exe 何检查 检查 文件 是否      更新时间:2023-10-16

我想检查 win32 EXE 文件是否已运行(仅知道文件路径和名称(。

请告诉我如何使用win32 API代码实现它。

多谢!

我的意思是让每个 EXE 路径只运行一个实例。

仅给定 EXE 的路径,您需要枚举正在运行的进程,直到找到具有匹配路径的进程。看看EnumProcesses()Process32First()/Process32Next()。有关更多详细信息和代码示例,请参阅 MSDN 上的进程枚举。

通过阅读 Remy Lebeau 的答案,我成功地使用以下代码检查当前应用程序是否已在其他进程中运行:

DWORD processes[4096];
DWORD bytesGot;
EnumProcesses(processes, sizeof processes, &bytesGot);
DWORD processesCount = bytesGot / sizeof(DWORD);
WCHAR currName[MAX_PATH];
GetModuleFileNameEx(GetCurrentProcess(), NULL, currName, MAX_PATH);
DWORD currProcessId = GetCurrentProcessId();
for(int x=0;x<=processesCount-1;x++)
{
HANDLE process = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processes[x]);
WCHAR name[MAX_PATH];
GetModuleFileNameEx(process,NULL, name, MAX_PATH);
CloseHandle(process);
if (processes[x]!=currProcessId&& wcscmp(name, currName)==0) return 0;
}

非常感谢雷米·勒博:)非常有用的提示。

启动时创建一个空白文件并检查该文件是否存在。