易语言问题 怎么判断程序程序已经运行,如果运行就结束,防止打开多个窗口。
写一个小工具,遇到一个问题,程序可以重复打开,百度一下后,用超级模块中的命令,进程是否存在()进行判断,结果还没打开有本程序,也提示程序已经运行,又用易语言自带的应用接口...
写一个小工具,遇到一个问题,程序可以重复打开,百度一下后,用超级模块中的命令,
进程是否存在 () 进行判断,结果还没打开有本程序,也提示程序已经运行,又用易语言自带的应用接口支持库->系统处理 中的命令, 取系统进程列表()问题依旧。
经查找,找到问题了。不管用超级模块还是系统自带命令,就算把代码写在__启动窗口创建完毕 下,都能取到自身进程,用进程判断程序多开看来不行了,那有有没其它 方法呢?
为测试是不是取到了自身进程,写了一段代码:如下
运行后: 展开
进程是否存在 () 进行判断,结果还没打开有本程序,也提示程序已经运行,又用易语言自带的应用接口支持库->系统处理 中的命令, 取系统进程列表()问题依旧。
经查找,找到问题了。不管用超级模块还是系统自带命令,就算把代码写在__启动窗口创建完毕 下,都能取到自身进程,用进程判断程序多开看来不行了,那有有没其它 方法呢?
为测试是不是取到了自身进程,写了一段代码:如下
运行后: 展开
展开全部
---判断窗口标题
.版本 2.支持库 eAPI
.子程序 __启动窗口_创建完毕
.局部变量 i, 整数型
.局部变量 wins, 文本型, , "0"
wins = 取所有窗口列表 ()
.计次循环首 (取数组成员数 (wins), )
i = i + 1
.如果 (取窗口标题 (到数值 (wins [i])) = 取窗口标题 (取窗口句柄 ()))
结束 ()
.否则
.如果结束
.计次循环尾 ()
' 记住窗口一定要有标题!
---判断进程
.版本 2.支持库 eAPI
.子程序 __启动窗口_创建完毕
.局部变量 进程列表, 进程信息, , "0"
.局部变量 临时名称, 文本型
.局部变量 第一位置, 整数型
.局部变量 第二位置, 整数型
.局部变量 临时文本, 文本型
.局部变量 成员, 整数型
进程列表 = 取系统进程列表 ()
临时名称 = 取执行文件名 ()
.计次循环首 (取数组成员数 (进程列表), 成员)
临时文本 = 临时文本 + 进程列表 [成员].进程名称
.计次循环尾 ()
第一位置 = 寻找文本 (临时文本, 临时名称, , 真)
第二位置 = 寻找文本 (临时文本, 临时名称, 第一位置 + 2, 真)
.如果真 (第二位置 > 第一位置)
信息框 (“该程序正在运行中...” + #换行符 + “请不要重复运行...”, #警告图标, “提示信息”)
结束 ()
.版本 2.支持库 eAPI
.子程序 __启动窗口_创建完毕
.局部变量 i, 整数型
.局部变量 wins, 文本型, , "0"
wins = 取所有窗口列表 ()
.计次循环首 (取数组成员数 (wins), )
i = i + 1
.如果 (取窗口标题 (到数值 (wins [i])) = 取窗口标题 (取窗口句柄 ()))
结束 ()
.否则
.如果结束
.计次循环尾 ()
' 记住窗口一定要有标题!
---判断进程
.版本 2.支持库 eAPI
.子程序 __启动窗口_创建完毕
.局部变量 进程列表, 进程信息, , "0"
.局部变量 临时名称, 文本型
.局部变量 第一位置, 整数型
.局部变量 第二位置, 整数型
.局部变量 临时文本, 文本型
.局部变量 成员, 整数型
进程列表 = 取系统进程列表 ()
临时名称 = 取执行文件名 ()
.计次循环首 (取数组成员数 (进程列表), 成员)
临时文本 = 临时文本 + 进程列表 [成员].进程名称
.计次循环尾 ()
第一位置 = 寻找文本 (临时文本, 临时名称, , 真)
第二位置 = 寻找文本 (临时文本, 临时名称, 第一位置 + 2, 真)
.如果真 (第二位置 > 第一位置)
信息框 (“该程序正在运行中...” + #换行符 + “请不要重复运行...”, #警告图标, “提示信息”)
结束 ()
展开全部
这种防止多开一般是用互斥体的
这种方法并不保险,万一系统进程中有一个程序的文件名跟你的一模一样,但你的程序实际上并未运行,那岂不导致误判?
所以最保险的方法就是互斥体检测,这也是大部分防止多开的程序都这么实现的方法,还能给第一打开的程序传递消息,实现其他操作!
这个代码可以去论坛搜“防止程序多开运行”或者“只运行一个程序”
没解决的话百度Hi我直接传给你代码(不需要模块,直接代码~)
这种方法并不保险,万一系统进程中有一个程序的文件名跟你的一模一样,但你的程序实际上并未运行,那岂不导致误判?
所以最保险的方法就是互斥体检测,这也是大部分防止多开的程序都这么实现的方法,还能给第一打开的程序传递消息,实现其他操作!
这个代码可以去论坛搜“防止程序多开运行”或者“只运行一个程序”
没解决的话百度Hi我直接传给你代码(不需要模块,直接代码~)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询