  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		sunghsia
 
 
  註冊時間: 2003-06-13 文章: 52 來自: 台北
  第 1 樓
  | 
		
			
				 發表於: 星期四 三月 13, 2008 1:28 am    文章主題: 又一種不重覆開啟同一程式 | 
				     | 
			 
			
				
  | 
			 
			
				* --------------------------------------------------------------------------------------------------------------------------------------------------
 
 
* 建立一個Mutex(互斥)對象的方法來檢測是否已經存在了另一個實例, 一般都是通過GetLastError獲得錯誤編號進行判斷
 
* 這只是進程其中的一種應用, 如配合其他進程滿複雜的, 所以參數應用請另行查詢 ("CreateMutex")
 
* 適用於 vfp編譯後的 exe執行檔
 
* 適用於一般不重覆開啟同一 exe執行檔
 
 
* --------------------------------------------------------------------------------------------------------------------------------------------------
 
 
&& 在 init 程式起始 <或> load 載入程式之事件方法中, 加入以下程式碼 :
 
 
DECLARE INTEGER CreateMutex IN win32api INTEGER Security, INTEGER Owned, STRING @ MutexName 
 
DECLARE INTEGER GetLastError IN win32api 
 
DECLARE INTEGER ReleaseMutex IN WIN32API INTEGER nHandle 
 
 
tcMutexName ="互斥名稱" + chr(0)
 
hMutex = CreateMutex(0, 1, @tcMutexName)
 
 
ERROR_ALREADY_EXISTS = 183
 
 
   lErr = GetLastError()                             && 獲得最後發生的錯誤編號
 
if lErr = ERROR_ALREADY_EXISTS    && 如欲開啟的程式已經存在
 
           messagebBox ("同一程式作業中...",16)
 
 
           && 以下結束重覆開啟同一 exe執行檔的程式碼 (但有時須配合程式的運作)
 
 
            thisform.release    && 結束程式的例如
 
           * ......... ...
 
           * ...... ............  ...
 
endif
 
 
 
* --------------------------------------------------------------------------------------------------------------------------------------------------
 
 
&& 在 destory 程式結束前 (或) unload 釋放程式後之事件方法中, 加入以下程式碼 :
 
 
    = ReleaseMutex (hMutex)         &&只有在正常運行後才釋放Mutex物件
 
 
* -------------------------------------------------------------------------------------------------------------------------------------------------- | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |