自己編譯爲EXE文件運行一次看看吧,我測試過的,死機也能檢測得出來。
注:一定要編譯爲獨立可執行文件!按理APP也可以,不過沒試過。在_SCREEN下肯定不行的,試過了。為什麼在_SCREEN下不行?不知道。
多機、網絡環境不存在禁止重複啓動的問題。基本上就單機有這種需要,此時可將標誌文件放置在本地磁盤上,即是該機已啓動標誌。如果程序中途死機,會有一份屍骸存在,但它是可以打開的,如果無法打開,表明程序在工作中(它佔住了)。樓主自己想辦法隱蔽這些動作和信息,我不寫那部分代碼了。
友情忠告:用API函數做這件事是自找麻煩,它嚴重依賴於系統和軟件版本!
[ 本帖最后由 TonyDeng 于 2011-7-16 01:01 编辑 ]
程序代码:
CLEAR ALL CLEAR IF On_Start() frm_Test = CREATEOBJECT("_Test") frm_Test.Show READ EVENTS On_Quit() ENDIF RETURN DEFINE CLASS _Test AS Form ShowWindow = 2 AutoCenter = .T. PROCEDURE Destroy CLEAR EVENTS ENDPROC ENDDEFINE PROCEDURE On_Start() PUBLIC gcFlagFileName AS Character, gnFlagFileHandle AS Integer gcFlagFileName = "D:\Started.vfp" gnFlagFileHandle = Null IF FILE(gcFlagFileName) gnFlagFileHandle = FOPEN(gcFlagFileName) IF gnFlagFileHandle == -1 MESSAGEBOX("本程序不能重複啓動!", 16, "") RETURN .F. ELSE On_Quit() ENDIF ENDIF gnFlagFileHandle = FCREATE(gcFlagFileName) RETURN .T. ENDPROC PROCEDURE On_Quit() FCLOSE(gnFlagFileHandle) DELETE FILE (gcFlagFileName) ENDPROC
注:一定要編譯爲獨立可執行文件!按理APP也可以,不過沒試過。在_SCREEN下肯定不行的,試過了。為什麼在_SCREEN下不行?不知道。
多機、網絡環境不存在禁止重複啓動的問題。基本上就單機有這種需要,此時可將標誌文件放置在本地磁盤上,即是該機已啓動標誌。如果程序中途死機,會有一份屍骸存在,但它是可以打開的,如果無法打開,表明程序在工作中(它佔住了)。樓主自己想辦法隱蔽這些動作和信息,我不寫那部分代碼了。
友情忠告:用API函數做這件事是自找麻煩,它嚴重依賴於系統和軟件版本!
[ 本帖最后由 TonyDeng 于 2011-7-16 01:01 编辑 ]
授人以渔,不授人以鱼。