再談應用程式的例項問題 (轉)
再談應用的例項問題
廣州智軟公司
盧斌
---- 周長發先生的《Visual C++的若干技巧》提供了使應用程式只能執行一個例項的一種解決辦法,本人經過實踐後發現效果不錯,但也發現如果在啟動一個例項後,將應用程式的名稱做一下修改,執行修改後的檔案仍然可以啟動多個例項。而UltraEdit,GetRight等則不存在這樣的情況。
---- 檢視程式碼和VC的幫助後,發現問題在於原文在建立訊號量和設定尋找標記時使用的是CWinApp的成員變數 m_pszExeName。該成員變數其實是應用程式執行檔案的名稱去掉副檔名後的部分,而不是應用程式名。 真正的應用程式名應為成員變數m_pszAppName。於是將用到m_pszExeName的三處程式碼均改為m_pszAppName, 重新編譯執行,情況消失。
---- 雖然一般情況下不會修改應用程式執行檔案的名稱,但作為開發人員,我們的責任是將程式 儘量完美,存在缺陷不是我們所願,因此寫此短文以作補充。
---- 最後再提供一個方法和一個資訊:
---- 1.另一種使應用程式只能執行一個例項的方法,只需在InitInstance()的最開始新增下列語句即可:
HANDLE m_hMutex = CreateMutex(NULL,TRUE,m_pszAppName); if (GetLastError()==ERROR_ALREADY_EXISTS){ return FALSE; }
---- 但這種方法的不足之處是不能將已經啟動的例項啟用。
---- 2.在stingray公司整理開發的MFC FAQ軟體中也提供了一些方法。該軟體實際是一個MFC使用技巧的大彙集, 對使用MFC極有幫助,各位朋友不妨去stingray公司的主頁(或 ).
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988836/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 再談多型--多型的應用舉例: (轉)多型
- localStorage應用程式碼例項
- 基本複製應用例項(轉)
- 再談量化策略失效的問題
- 關於 Angular 應用 Components 和 Directives 的例項化問題Angular
- opacity應用程式碼例項
- ”innerHTML“的應用例項HTML
- 資料庫中的XML應用例項 (轉)資料庫XML
- onfocus和onblur應用程式碼例項
- Object.defineProperty()應用程式碼例項Object
- 演算法設計應用例項 (轉)演算法
- dd應用例項
- 蘋果iOS再曝嚴重問題 2.5萬應用程式存在漏洞蘋果iOS
- js解八皇后問題程式碼例項JS
- 水晶報表官方例項下載:報表和應用程式 (轉)
- 開發Web應用程式中Cookie使用的問題 (轉)WebCookie
- css3 calc()應用程式碼例項CSSS3
- javascript閉包的應用簡單程式碼例項JavaScript
- jQuery實現的JSONP應用程式碼例項jQueryJSON
- JdonFramework 5.1例項問題?Framework
- Windows 98 登錄檔應用的30個例項(轉)Windows
- js實現開啟應用程式程式碼例項JS
- js呼叫執行exe應用程式程式碼例項JS
- 再談開源軟體和錢的問題
- hive應用例項1Hive
- 智慧Web應用例項Web
- calico docker 應用例項Docker
- ORACLE外部表的應用例項Oracle
- 叢集的應用例項(zt)
- js解決漢諾塔問題程式碼例項JS
- 再談 Go 語言在前端的應用前景Go前端
- 再談網際網路下的SaaS應用
- window.onload事件應用程式碼例項事件
- js prototype原型應用簡單例項程式碼JS原型單例
- dd dt dl標籤應用例項程式碼
- [轉]BDB例項程式碼
- win xp故障恢復控制檯應用例項(轉)
- Excel函式應用例項:計算保險收益(轉)Excel函式