| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3432 人关注过本帖, 1 人收藏
标题:主程序中防止连编exe程序重复运行问题的解决心得
只看楼主 加入收藏
sqyanfu
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2018-5-29
结帖率:80%
收藏(1)
 问题点数: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
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册: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
帖 子:610
专家分:1784
注 册: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
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
用 CreateMutex() 创建一个互斥体是正解,按楼主的方法,如果有一个文件夹恰好叫“用友财务系统”并且已经打开,运行你的程序就会提示重复运行了。
2018-07-02 18:10
快速回复:主程序中防止连编exe程序重复运行问题的解决心得
数据加载中...
 
   



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

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