易语言问题 怎么判断程序程序已经运行,如果运行就结束,防止打开多个窗口。

写一个小工具,遇到一个问题,程序可以重复打开,百度一下后,用超级模块中的命令,进程是否存在()进行判断,结果还没打开有本程序,也提示程序已经运行,又用易语言自带的应用接口... 写一个小工具,遇到一个问题,程序可以重复打开,百度一下后,用超级模块中的命令,
进程是否存在 () 进行判断,结果还没打开有本程序,也提示程序已经运行,又用易语言自带的应用接口支持库->系统处理 中的命令, 取系统进程列表()问题依旧。
经查找,找到问题了。不管用超级模块还是系统自带命令,就算把代码写在__启动窗口创建完毕 下,都能取到自身进程,用进程判断程序多开看来不行了,那有有没其它 方法呢?
为测试是不是取到了自身进程,写了一段代码:如下

运行后:
展开
 我来答
单机Player
2012-11-24 · 专注单机游戏内容理解
单机Player
采纳数:15 获赞数:17

向TA提问 私信TA
展开全部
---判断窗口标题

.版本 2.支持库 eAPI
.子程序 __启动窗口_创建完毕
.局部变量 i, 整数型
.局部变量 wins, 文本型, , "0"

wins = 取所有窗口列表 ()
.计次循环首 (取数组成员数 (wins), )
i = i + 1
.如果 (取窗口标题 (到数值 (wins [i])) = 取窗口标题 (取窗口句柄 ()))
结束 ()
.否则

.如果结束
.计次循环尾 ()
' 记住窗口一定要有标题!

---判断进程

.版本 2.支持库 eAPI
.子程序 __启动窗口_创建完毕
.局部变量 进程列表, 进程信息, , "0"
.局部变量 临时名称, 文本型
.局部变量 第一位置, 整数型
.局部变量 第二位置, 整数型
.局部变量 临时文本, 文本型
.局部变量 成员, 整数型

进程列表 = 取系统进程列表 ()
临时名称 = 取执行文件名 ()
.计次循环首 (取数组成员数 (进程列表), 成员)
临时文本 = 临时文本 + 进程列表 [成员].进程名称
.计次循环尾 ()
第一位置 = 寻找文本 (临时文本, 临时名称, , 真)
第二位置 = 寻找文本 (临时文本, 临时名称, 第一位置 + 2, 真)
.如果真 (第二位置 > 第一位置)
信息框 (“该程序正在运行中...” + #换行符 + “请不要重复运行...”, #警告图标, “提示信息”)
结束 ()
gjsgdhr
2012-11-24 · TA获得超过1799个赞
知道小有建树答主
回答量:665
采纳率:77%
帮助的人:458万
展开全部
这种防止多开一般是用互斥体的
这种方法并不保险,万一系统进程中有一个程序的文件名跟你的一模一样,但你的程序实际上并未运行,那岂不导致误判?
所以最保险的方法就是互斥体检测,这也是大部分防止多开的程序都这么实现的方法,还能给第一打开的程序传递消息,实现其他操作!
这个代码可以去论坛搜“防止程序多开运行”或者“只运行一个程序”
没解决的话百度Hi我直接传给你代码(不需要模块,直接代码~)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式