注册 登录
编程论坛 VFP论坛

请教:设置软件唯一运行模式的方法

laibinhua 发布于 2022-05-10 12:54, 1033 次点击
我这样写,不对,还是可以重复运行
DECLARE LONG CreateMutex  IN Kernel32 STRING@, LONG, STRING@
DECLARE LONG GetLastError IN Kernel32
DECLARE LONG CloseHandle  IN Kernel32 LONG

szPrg  = PROGRAM()
hMutex = CreateMutex(NULL, 0, @szPrg)

IF GetLastError() = 183    && ERROR_ALREADY_EXISTS
    MESSAGEBOX(szPrg + " 不能重复运行")
    QUIT
ENDIF

CloseHandle(hMutex)
2 回复
#2
sdta2022-05-10 13:35
是不是下面的意思
*——避免多次运行程序
*——声明API函数“FindWindow”
DECLARE Integer FindWindow IN USER32.DLL String lpClassName,String lpWindowName
LPWINDOWNAME="医保及新农合医疗费用结算情况"
IF .NOT. FindWindow(0,lpWindowName)==0 &&寻找窗口标题
   =MESSAGEBOX("程序已经运行了",48,"提示信息")
   QUIT
ENDIF
_SCREEN.CAPTION=LPWINDOWNAME
#3
zhken2022-05-11 00:57
简单的方法是 启动是 打开一个表 时带上 EXCLUSIVE 拒绝再次打开,退出时释放。出现错误不能存取文件时退出。打开顺利则进入程序。
1