在易语言中怎样设置只能运行一个窗口???

2024-12-25 09:58:00
推荐回答(4个)
回答1:

给你这个源码(以前我写的),子程序在启动窗口创建完毕下运行,你自己看看

.版本 2
.支持库 eAPI

.子程序 禁止二次运行, , 公开, 推荐放在启动窗口创建完毕下
.参数 信息框标题, 文本型, 可空, 提示框提示标题,默认为"提示"
.参数 提示信息, 文本型, 可空, 提示框提示信息,默认为"禁止重复运行!"
.参数 是否提示, 逻辑型, 可空, 是否弹出提示框,默认为假
.局部变量 进程, 进程信息, , "0"
.局部变量 次数, 整数型
.局部变量 i, 整数型

次数 = 0
进程 = 取系统进程列表 ()
.计次循环首 (取数组成员数 (进程), i)
.如果 (进程 [i].进程名称 = 取执行文件名 ())
次数 = 次数 + 1
.否则

.如果结束

.计次循环尾 ()
.如果 (次数 > 1)
.如果 (是否为空 (是否提示))

.否则
.如果 (是否提示 = 真)
.如果 (是否为空 (提示信息))
.如果 (是否为空 (信息框标题))
信息框 (“禁止重复运行!”, 64, “提示”)
.否则
信息框 (“禁止重复运行!”, 64, 信息框标题)
.如果结束

.否则
.如果 (是否为空 (信息框标题))
信息框 (提示信息, 64, “提示”)
.否则
信息框 (提示信息, 64, 信息框标题)
.如果结束

.如果结束

.否则

.如果结束

.如果结束

结束 ()
.否则

回答2:

.版本 2

.程序集 窗口程序集1

.子程序 __启动窗口_创建完毕
.局部变量 互斥体, 文本型

互斥体 = _启动窗口.标题 + 按钮1.标题 ' 这里随便你加,。。。。。。。。。。。。。。
.如果真 (打开事件同步对象 (2031619, 假, 互斥体) ≠ 0) ' 判断本程序是否已经运行,已经运行就结束。。。。。。。。。。
结束 ()
.如果真结束
创建事件同步对象 (0, 假, 假, 互斥体) ' 没有运行就创建一个互斥体。。。。。。。。。。。。。。。。

.版本 2

.DLL命令 打开事件同步对象, 整数型, , "OpenEventA", , 禁止多开DLL
.参数 填2031619, 整数型, , dwDesiredAccess
.参数 假, 逻辑型, , bINheritHandle
.参数 资源名称, 文本型, , LpName

.DLL命令 创建事件同步对象, , , "CreateEventA", , 禁止多开DLL
.参数 事件属性0, 整数型, , LpEventAttributes
.参数 手动复位, 逻辑型, , bManualReset
.参数 初始状态, 逻辑型, , bInitialstate
.参数 资源名称, 文本型, , LpName

回答3:

给个建议,从API函数入手!
也可以向老QQ学习,在你编写的主程序中加入时钟组件,时刻判断是否打开了两个或多个标题,类名都一样的程序,然后怎样就是你自己的事情了!

回答4:

论坛搜索 互斥体