社区
C++ 语言
帖子详情
如何保证程序只运行一个实例
cpsoft
2003-12-09 06:35:33
如题
...全文
59
10
打赏
收藏
如何保证程序只运行一个实例
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cyj2008
2003-12-10
打赏
举报
回复
我通常是在运行一个应用程序实例时先创建一个互斥内核对象,如果内核对象已经存在,则说明已经运行了一个应用程序实例,因此退出当前程序。
这和yy315(yy315) 与flyelf(空谷清音)所采用的方法一样
cpsoft
2003-12-10
打赏
举报
回复
我好象还看见过有位大虾的书,好象是说Winmain的几个参数和这个问题有关,好象是hInstance,不知道是不是真的!
北极猩猩
2003-12-09
打赏
举报
回复
我还在一些Java的程序中看到过这样一个保持单个实例运行的方法,在程序第一次开始时打开一个Socket端口,然后在程序启动时连接这一端口,如果端口打开就说明已有一个实例在运行
短歌如风
2003-12-09
打赏
举报
回复
方法1:主窗口的窗口类名取特殊的名字,起动时搜索所有顶层窗口,检查有没有同样类名的窗口。
方法2:主窗口不必有特殊类名,用SetProp设置一个命名性性;起动时搜索所有顶层窗口,用GetProp检查属性。
方法3:起动时创建命名Mutex,如果创建失败并且错误代码表明是对象已经存在则退出。
方法4:起动时打开某一特殊名字的全局原子,如果不存在则创建,否则退出。
方法5:起动时检查注册表中某一固定位置的值,如果是0则把主窗口句柄写到这个位置,在退出时设为0,否则直接退出。
...
总之就是用OS提供的各种全局对象来处理。前两种方法可以得到前一实例的主窗口句柄,在退出时需要通知前一实例时应该用这种方法;3和4不能得到前一实例的主窗口句柄,但比较可靠。方法5比较危险,如果程序非正常退出了,就会导致下一次无法起动。
abitz
2003-12-09
打赏
举报
回复
http://expert.csdn.net/Expert/topic/2497/2497750.xml?temp=6.725711E-02
yy315
2003-12-09
打赏
举报
回复
我通常做法
在APP的InitInstance()函数中加入
例:
HANDLE m_hMutex=CreateMutex(NULL,TRUE, this->m_pszAppName);
if(GetLastError()==ERROR_ALREADY_EXISTS)
{
AfxMessageBox("已存在一个实例!");
return FALSE;
}
cityyokel
2003-12-09
打赏
举报
回复
看看《设计模式》里单件模式吧
神功智能
2003-12-09
打赏
举报
回复
试试这个
http://www.vchome.net/tech/multithread/thread37.htm
flyelf
2003-12-09
打赏
举报
回复
可以用MUTEX来确保
LPCTSTR lpcsMutex = _T("myownmutexname");
m_hMutex = CreateMutex(NULL, NULL, lpcsMutex);
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
AfxMessageBox("已经存在一个实例了");
return
}
sharkhuang
2003-12-09
打赏
举报
回复
static
java源码包---java 源码 大量
实例
Tcp服务端与客户端的JAVA
实例
源代码,
一个
简单的Java TCP服务器端
程序
,别外还有
一个
客户端的
程序
,两者互相配合可以开发出超多的网络
程序
,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
java web开发实战1200例 第二卷 源码
《Java Web开发实战1200例(第2卷)》附带有配套DVD光盘,光盘中提供有书中全部
实例
的源代码,这些源代码都是经过作者精心调试通过的,
保证
能够在Windows XP、Windows 2003及Windows 7操作系统下编译和
运行
。...
征服JavaScript
程序
设计与应用
实例
视频课程
本课程将深入讲解Javascript的各种技术,让学员可以利用Javascript编写出非常复杂的
程序
。本课程也是React Native、Cocos2d-js、Unity3D、PhoneGap、Web等技术的前导课程。
保证
程序
只
运行
一个
实例
(delphi)
许多时候我们希望
程序
只有
一个
实例
在
运行
,而不是多个
实例
同时
运行
。 其实完成这一功能有很多种方法,我把自己知道的几种方法简单介绍一下。一 使用全局原子program Project1;uses windows, Forms, Dialogs, ...
Linux下只允许
程序
运行
一个
实例
Linux下只允许
程序
运行
一个
实例
,这里想到两个方法,这个是用到ps,
一个
是用到文件锁。 1,ps方法:
程序
开始
运行
时读指定文件,如果匹配到
程序
名则已经有
运行
的进程,退出。若匹配不到则往文件写一些信息,
程序
...
C++ 语言
64,691
社区成员
250,497
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章