#2
星光悠蓝2023-10-10 10:16
|
程序代码:
DECLARE integer FindWindow in win32api string cClass,String cCaption
if FindWindow(0,thisform.Caption)#0
messagebox('本EXE已经运行')
endif
if FindWindow(0,thisform.Caption)#0
messagebox('本EXE已经运行')
endif
FindWindow(0,thisform.Caption)=0时,exe没有运行,如果大于0则表示已经运行
说明:执行的是编译后的EXE程序
问题:如果运行了程序,则FindWindow(0,thisform.Caption)非0,此时无法判断是否重复运行
解决办法:在setting.ini里写一个值,表示程序已经运行,程序退出时将这个值写为空,当再次运行时,判断这个值,如果是空则表示首次运行,否则就是重复运行
带来的问题:如果程序非正常退出,如断电、死机等,没能将那个值写为空,则以后再进入的时候则会判断为已经运行,至此卡住了
各位有什么好方法