ITPub博客

首页 > 应用开发 > IT综合 > 仅允许程序一个实例运行VC6

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

原创 IT综合 作者:exocet 时间:2008-04-01 16:01:29 0 删除 编辑

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

一个方法是使用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博客 ” ,链接:https://blog.itpub.net/38085/viewspace-1001755/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    45
  • 访问量
    1677084