僅允許程式一個例項執行VC6

exocet發表於2008-04-01

網上介紹了幾種方法,現轉載在這裡備忘。

一個方法是使用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://ghfking.blog.sohu.com/80064450.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/38085/viewspace-1001755/,如需轉載,請註明出處,否則將追究法律責任。

相關文章