防止程式重覆執行的方式很多,今天我列舉幾種常用的方法給大家參考
一.建立記錄法
原理:在系統的資料表中新增一筆使用者記錄,當程式執行時檢查是否有此筆記錄,若有的話則結束程式
使用 sys(0)
system.dbf
system computer
======== ========
系統代號 電腦名稱
如此,即可檢測那些電腦執行了那些系統,要防止程式執行更是輕而易舉的事了
但如果您網路上的電腦常常當機,勸您別使用此種方法,否則常常要清理殘留記錄就有您忙了
另外,在使用者離開系統時記得將記錄刪除....
二.建立檔案法
原理:在本機建立一個table,並為獨佔,所以當您第二次執行程式時就會發生錯誤,可知是重覆執行的狀態,
此方法也可應用在網路上,如您若每次只允許一個人使用系統,那就將path指向網路共用目錄,如此若有一人使用時,其他人就不能用了
範例程式如下:
*
FUNCTION chk_dup1
oset=SET("SAFETY")
TRY
SET SAFETY off
CREATE TABLE chk_dupe (ax c(1))
CATCH TO oerror
=MessageBox("Repeat!!")
quit
ENDTRY
SET SAFETY &oset
endfunc
*
三.使用 windows API
*
原理:使用winodws基本的API函式,尋找執行中的應用程式"標題"(Foxpro叫 _Screen.Caption)
程式如下:
FUNCTION chk_dup
lpata p_caption
Local lnHWND
DECLARE INTEGER FindWindow IN User32.DLL AS Find_window STRING,STRING
lnHWND = Find_Window(0, p_caption)
*
If lnHWND >0
=MessageBox("Repeat!!")
Quit
ENDIF
ENDFUNC
**************************
注意:因為系統的 explorer (檔案總管) 會將目錄名稱設為標題,所以您的程式標題若和目錄名稱一樣的話,而目錄又開著,對不起,您無法執行您的程式了,會一直說重覆....
發表於 2006/03/31 08:41 AM
沒有留言:
張貼留言