仅允许程序一个实例运行VC6

网上介绍了几种方法,现转载在这里备忘。

一个方法是使用FindWindow函数

另一个方法是使用信号量控制

还有提到 ATOM ,不懂

windows平台下其它编程语言都可以类似处理。

[@more@]

用VC++实现控制程序运行唯一实例

http://dev.yesky.com/67/2257567.shtml

用FindWindow()函数判断是否有同一个类的程序在运行,参数为类名或程序标题栏内容。

主要问题是类名问题,使用Spy++获得的程序主窗口类名是,Afx:400000:b:10003:6:56e0bb3,而且最后冒号后的部分每次运行时都不一样,网上有人介绍说这是MFC使用窗口的一些外观特征生成的。

搜索到有人介绍说 重载CMainFrame的PreCreateWindow,在其中为CMainFrame指定一个固定不变的类名。使用函数AfxRegisterClass http://topic.csdn.net/t/20040707/18/3154273.html

照葫芦画瓢,是可以了。

另一个方法是 使用全局信号量

http://ghfking.blog.sohu.com/80064450.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/38085/viewspace-1001755/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/38085/viewspace-1001755/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值