自己編譯爲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 编辑 ]

授人以渔,不授人以鱼。








