用命名内核对象判断程序是否有实例正在运行
2017-01-21 10:58
387 查看
命名内核对象可以进程之间共享句柄
通过让进程每次运行创建一个命名内核对象,判断创建是否成功
用GetLastError()获得错误代码,即可判断程序是否有实例正在运行
代码页比较简单,不做过多描述,详情参考《windows核心编程》
#include <iostream>
#include <windows.h>
int main()
{
HANDLE hMutex = CreateMutex( NULL, false, "unique");
//但是这没有达到共享,只能检测是否有实例在运行
if ( ERROR_ALREADY_EXISTS == GetLastError() )
{
std::cout << "已有一个实例在运行" << std::endl;
goto ERR;
}
std::cout << "没有实例正在运行" <<std ::endl;
ERR:getchar();
CloseHandle( hMutex );
return 0;
}
通过让进程每次运行创建一个命名内核对象,判断创建是否成功
用GetLastError()获得错误代码,即可判断程序是否有实例正在运行
代码页比较简单,不做过多描述,详情参考《windows核心编程》
#include <iostream>
#include <windows.h>
int main()
{
HANDLE hMutex = CreateMutex( NULL, false, "unique");
//但是这没有达到共享,只能检测是否有实例在运行
if ( ERROR_ALREADY_EXISTS == GetLastError() )
{
std::cout << "已有一个实例在运行" << std::endl;
goto ERR;
}
std::cout << "没有实例正在运行" <<std ::endl;
ERR:getchar();
CloseHandle( hMutex );
return 0;
}
相关文章推荐
- 如何用创建命名对象来判断应用程序是否已有一个实例在运行?
- VB程序怎么判断另一个程序是否正在运行?
- Inno Setup安装、卸载时判断是否程序正在运行
- 判断该程序是否已有实例运行
- 判断程序实例是否已经运行的N种方法
- hs程序之启动(保证程序单实例、 程序自启动、判断程序是否有实例运行、查找对话框窗体)
- 判断程序实例是否已经运行的N种方法
- C# WINFORM判断程序是否运行,且只能运行一个实例
- 判断程序是否正在运行
- 调用API判断程序是否正在运行中
- 使用内核对象使程序单实例运行:互斥信号量
- C#判断是否有全屏程序正在运行
- 判断是否有全屏程序正在运行(C#)
- Inno Setup安装、卸载时判断是否程序正在运行
- Inno Setup安装、卸载时判断是否程序正在运行,安装完成时自动打开网页的脚本
- c++ 或者 vc++中判断程序实例是否运行
- 判断是否有全屏程序正在运行(C#)
- Inno Setup安装、卸载时判断是否程序正在运行,安装完成时自动打开网页的脚本
- 用命名内核对象防止windows同时运行两个程序
- C# WINFORM判断程序是否运行,且只能运行一个实例