如何检查 win32 exe 文件是否已运行?(使用 win32 API 代码)
How to check if a win32 exe file is already running? (use win32 API code)
我想检查 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;
}
非常感谢雷米·勒博:)非常有用的提示。
启动时创建一个空白文件并检查该文件是否存在。
相关文章:
- C++线程:如何在一个线程仍在运行时阻止另一个线程执行 (Win32)
- C++ DLL 运行时错误"abc.dll is not a valid WIN32 application" 。请帮助解决这个问题
- Win32 函数可以在同一线程上异步运行吗?
- 如何检查 win32 exe 文件是否已运行?(使用 win32 API 代码)
- 如何在 Linux/Apache 虚拟主机上运行 win32 控制台应用程序?
- Exe不是有效的win32应用程序,但在64位上运行
- 是否可以在Windows 8环境上在Visual Studio 2005上运行VC ,Win32应用程序
- Win32 控制台代码在哪里运行?从多个线程使用时控制台挂起
- 如何将任何 *.jpg图像嵌入Win32可执行文件中并在运行时使用它
- 使用文件I/O正确创建和运行win32服务
- C++Win32 在低优先级模式下运行应用程序/线程
- CMake:运行链接命令时出错:%1不是有效的Win32应用程序
- 运行时的 win32 控件
- 什么可能导致我的 C++ win32 应用程序在后台运行
- OpenSSL 在作为 win32 服务运行时SSL_CTX_new崩溃
- 从支持/clr的win32 C++运行C#
- WinXP上具有C运行库libs 2011的Win32程序无效
- 如何防止Win32应用程序在主窗口关闭后在后台运行
- Win32 应用程序在启动时不运行
- c++ WIN32:运行没有命令提示符窗口的程序