使Qt程序只运行一个实例
2010-05-20 08:48
337 查看
版权声明
本文为原创作品,请尊重作者的劳动成果。转载必须保持文章完整性,并以超链接形式注明原始作者“tingsking18
”和
主站点
地址,方便其他朋友提问和指正。
让应用程序只运行一个实例,这个问题很古老了。以及以前
HGR
老胡写过操作
event
的
delphi
版本的。当然在
win
下这样的解决方案还是很多的。
让
Qt
程序只运行一个实例,当然用
win
下的
native API
是很不靠谱的,因为这样会牺牲掉
Qt
跨平台的特性。所以我给出下面两种解决方案。原理上就是进程间通讯。
QSingleApplication
用的而是
socket
,而我使用的是共享内存。
1.
使用
QSingleApplication
。
QSingleApplication
是
Qt
提供的一个
solution
,它不包含在
Qt
的
library
中。遵循
LGPL
协议。关于如何使用,下载了这个
solution
之后,里面有例子。还有,
QtCreator
中还用到了它。你也可以翻一番
QtCreator
的源代码。
2.
使用共享内存。
//
确保只运行一次
QSystemSemaphore
sema("JAMKey",1,QSystemSemaphore::Open);
sema.acquire();//
在临界区操作共享内存
SharedMemory
QSharedMemory
mem("SystemObject");//
全局对象名
if
(!mem.create(1))//
如果全局对象以存在则退出
{
QMessageBox::information(0,
MESSAGEBOXTXT,"An instance has already been running.");
sema.release();//
如果是
Unix
系统,会自动释放。
return 0;
}
sema.release();//
临界区
相关文章推荐
- QT程序只运行一个实例
- 使Qt 程序只能运行一个实例的3种方法
- 使Qt程序只能运行一个实例的3种方法
- Qt程序只运行一个实例
- Qt让程序只运行一个实例
- 使Qt程序在Windows系统中仅运行一个实例
- 使Qt 程序只能运行一个实例的3种方法
- QT实现只允许运行一个程序实例
- QT 保证Qt程序只运行一个实例
- Qt程序只运行一个实例
- Qt程序只运行一个实例
- Qt程序只运行一个实例
- 使Qt程序只运行一个实例
- QT中实现程序只运行一个实例--应用程序的单例化
- Qt中让程序只运行一个实例
- qt编写一个只能运行单个实例的程序,不用Windows API
- 使Qt程序在Windows系统中仅运行一个实例
- Qt程序只运行一个实例(转)
- QT: 如何实现程序的单实例运行检测?
- C# WINFORM判断程序是否运行,且只能运行一个实例