标题:主程序中防止连编exe程序重复运行问题的解决心得
只看楼主
sqyanfu
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2018-5-29
结帖率:80%
 问题点数:0 回复次数:5 
主程序中防止连编exe程序重复运行问题的解决心得
为防止连编后的exe程序重复被打开,上网搜了一段代码:
cCaption="用友财务系统"
DECLARE INTEGER FindWindow IN win32api STRING cClass,STRING cCaption
IF FindWindow(0,cCaption)#0
_SCREEN.CAPTION=cCaption
=MESSAGEBOX("程序已经运行,请注意任务栏!",16,"提示")
QUIT
RETURN .F.
ENDIF
经过实际检测,只要一打开这个必然报错。

后经过调整为:
cCaption="用友财务系统"
DECLARE INTEGER FindWindow IN win32api STRING cClass,STRING cCaption
IF FindWindow(0,cCaption)#0
=MESSAGEBOX("程序已经运行,请注意任务栏!",16,"提示")
QUIT
RETURN .F.
else
_SCREEN.CAPTION=cCaption
ENDIF
解决问题,特此张贴,希望对于和我一样的小白有个帮助。
另外补充说明,如果和我一样是用主窗口做程序运行界面的,连编后第一次打开exe没反应,第二次报错已经运行,那么可能是你的config文件中把“SCREEN = off”问题,把他改成“SCREEN = on”试试。

补充说明:
若仍然反复出现报错(已经运行提示),请注意更换 cCaption="用友财务系统" 双引号内的名称,使之符合其他可是类库及项目的名称。这个出错,也容易导致报错。

[此贴子已经被作者于2018-6-25 13:51编辑过]

搜索更多相关主题的帖子: 防止 连编 exe STRING 运行 
2018-06-24 23:04
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
WinAPI也可以用 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)
CLEAR DLLS
RETURN
2018-06-25 05:04
sqyanfu
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2018-5-29
得分:0 
感谢大侠“吹水佬”的关注,比起前面一个容易反复报错,您的代码经测试非常好用。
    各位和我一样的白学生,可以将上面if后、elese前的messagebox()信息删掉,换成你的主程序环境设置代码即可。
2018-06-25 13:46
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:565
专家分:1668
注 册:2017-7-16
得分:0 
我基本不用API的东东,
VFP自制程序启动以后,再次启动,那就演化为[多任务]
楼主提出的
config文件中把“SCREEN = off”问题,把他改成“SCREEN = on”
我也从来来不用config文件
2018-06-25 14:09
sharamjam
Rank: 2
来 自:UK
等 级:论坛游民
帖 子:81
专家分:59
注 册:2014-9-19
得分:0 
回复 4楼 gs2536785678
牛B牛B

我是VFP菜鸟……
但是用VFP实现一个个小应用,还是很有成就感的
2018-06-30 14:12
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
用 CreateMutex() 创建一个互斥体是正解,按楼主的方法,如果有一个文件夹恰好叫“用友财务系统”并且已经打开,运行你的程序就会提示重复运行了。
2018-07-02 18:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-488126-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016151 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved