网上介绍了几种方法,现转载在这里备忘。
一个方法是使用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/