注册 登录
编程论坛 VFP论坛

如何判断exe执行文件已经打开

fanjinyu9108 发布于 2021-09-17 09:05, 1237 次点击
我有一个软件,我想让该软件在某台电脑只能执行一次,可是如何判断该软件exe执行文件已经在电脑中打开了呢?
5 回复
#2
吹水佬2021-09-17 11:37
这个EXE文件是你写的吗?
#3
XUFN2021-09-17 16:33
**************************************
*禁止程序两次运行
**************************************
PUBLIC Handle
DECLARE INTEGER CreateFileMapping IN kernel32.DLL INTEGER ,;
         INTEGER , INTEGER , INTEGER , INTEGER , STRING
DECLARE INTEGER GetLastError IN kernel32.DLL
DECLARE INTEGER CloseHandle IN kernel32.DLL INTEGER
Szname = 'Myonly'
Handle = CreateFileMapping(4294967295,0,4,0,128,Szname)
IF Handle = 0
    MESSAGEBOX('创建内存映谢文件失败'+CHR(13)+'工具无法在该操作系统里运行 !',0,'错误')
    QUIT
ELSE
    IF GetlastError() = 183
       = MessageBox('该工具已运行 !',64,'提示')
       CLOSE ALL
       CLEAR DLLS
       CLEAR EVENTS
       QUIT
    ENDIF
ENDIF
#4
fanjinyu91082021-09-18 08:05
吹水佬师傅,程序时我写的,我要判断
#5
吹水佬2021-09-18 09:38
以下是引用fanjinyu9108在2021-9-18 08:05:52的发言:

吹水佬师傅,程序时我写的,我要判断

程序代码:

** API CreateMutex() 防止程序重复运行
DECLARE LONG CreateMutex  IN Kernel32 STRING@, LONG, STRING@
DECLARE LONG GetLastError IN Kernel32
DECLARE LONG CloseHandle  IN Kernel32 LONG
cPrg  = PROGRAM()
hMutex = CreateMutex(NULL, 0, cPrg)
IF GetLastError() != 183    && ERROR_ALREADY_EXISTS
    MESSAGEBOX(cPrg + " 正常启动运行")
ELSE
    MESSAGEBOX(cPrg + " 不能重复运行")
ENDIF
CloseHandle(hMutex)
#6
fanjinyu91082021-09-23 06:21
非常感谢,这几天很忙,在做别的程序,先结贴。

[此贴子已经被作者于2021-9-23 06:25编辑过]

1