由于编程的要求及其他方面的问题,客户无意中重复启动应用程序往往可能会造成不可预测的问题。防止客户重复启动有很多方法,我常用的是:
1、主程序中要求独占式打开数据库。这样,当打开数据库失败的时候便知道已经有程序运行了。代码如下:
on Error lnError = error()
*!* 打开数据库
if !dbused(C_DB02_LOC)
open database 数据库名 excl
endif
if lnError # 0
=messagebox("不能打开数据库,原因是有其他用户在使用同一个系统,请稍后重试!", MB_ICONINFORMATION + MB_OK, "系统提示")
return .f.
endif
on Error
2、用API函数
用FindWindow 及ShowWindowAsync API函数:
Declare Long FindWindow In USER32.DLL String, String
Declare Long ShowWindowAsync In USER32.DLL Long, Long
nTitle = "窗口名称"
hWnd = FINDWINDOW("", nTitle)
IF hWnd != 0
ShowWindowAsync(hWnd, 3) &&请注意看这个API函数的效果
Clear Dlls
Clear All
Quit
ENDIF
当然还有很多其他的方法。对于我个人而言,喜欢采用第一种方法。简单,呵呵。