VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

又一種不重覆開啟同一程式

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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物件

* --------------------------------------------------------------------------------------------------------------------------------------------------
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作