易语言怎么防止多开,,当程序已经打开时再要打开一个的时候原来的程序置顶,不打开新的程序

易语言怎么防止多开,,当程序已经打开时再要打开一个的时候原来的程序置顶,不打开新的程序

1楼太复杂,2楼不靠谱,三楼……

我的方法是:

是一个易程序同时只能打开一个吗?

置顶设置如下:把窗口总在最前属性设为真。

防止多开设置如下:

1、添加dll命令,有关判断事件对象的。

.版本 2


.DLL命令 创建事件对象, 整数型, "kernel32", "CreateEventA"

    .参数 安全特性, 整数型

    .参数 重设事件, 逻辑型

    .参数 触发状态, 逻辑型

    .参数 对象名字, 文本型


.DLL命令 打开事件对象, 整数型, "kernel32", "OpenEventA"

    .参数 访问方法, 整数型

    .参数 句柄继承, 逻辑型

    .参数 对象名字, 文本型


.DLL命令 关闭事件对象, 整数型, "kernel32", "CloseHandle"

    .参数 对象句柄, 整数型

2、写个子程序:

.版本 2


.子程序 程序是否已运行, 逻辑型, 公开, 真表示已经运行,假表示还未运行

.参数 标志文本, 文本型, , 可以是任何文本,但是最好要长一点以保证和系统中已有其他事件对象的名称不相冲突。


.如果真 (打开事件对象 (2031619, 假, 标志文本) ≠ 0)

    返回 (真)

.如果真结束

事件对象句柄 = 创建事件对象 (0, 假, 假, 标志文本)

返回 (假)


.子程序 关闭事件对象, , 公开, 窗口销毁时调用


关闭事件对象 (事件对象句柄)

3、添加一个变量,程序集的。

.版本 2


.程序集变量 事件对象句柄, 整数型

4、使用时在窗口的“创建完毕”与“将被销毁”事件写入代码:

.版本 2


.子程序 __启动窗口_创建完毕


.如果真 (程序是否已运行 (“禁止多次运行”) = 真)

    信息框 (“程序已经运行!”, 0, )

    销毁 ()

.如果真结束



.子程序 __启动窗口_将被销毁


关闭事件对象 ()


然后效果如下:

追问

多开始防止啦,但是程序不能自动打开啊,我的程序主界面是隐藏的或最小化的,怎么把它显示出来那

追答

我不懂你的意思,“把它”是把谁?“程序不能自动打开”又是神马意思,程序主界面是隐藏的或最小化的话不影响防止多开的信息框的弹出啊。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-04
.版本 2
.子程序 __启动窗口_创建完毕
.局部变量 局_互斥体, 文本型
局_互斥体 = “这里随便填,要复杂点的”
.如果真 (API打开事件同步对象 (2031619, 假, 局_互斥体) ≠ 0)
API控制窗口状态 (取数值注册项 (3, “wodechengxu”, ), 1)
结束 ()
.如果真结束
API创建事件同步对象 (0, 假, 假, 局_互斥体)
写注册项 (3, “wodechengxu”, _启动窗口.取窗口句柄 ())

‘以下是DLL:

.版本 2
.DLL命令 API打开事件同步对象, 整数型, , "OpenEventA", , 禁止多开DLL
.参数 填2031619, 整数型, , dwDesiredAccess
.参数 假, 逻辑型, , bINheritHandle
.参数 资源名称, 文本型, , LpName
.DLL命令 API创建事件同步对象, , , "CreateEventA", , 禁止多开DLL
.参数 事件属性0, 整数型, , LpEventAttributes
.参数 手动复位, 逻辑型, , bManualReset
.参数 初始状态, 逻辑型, , bInitialstate
.参数 资源名称, 文本型, , LpName
.DLL命令 API控制窗口状态, 整数型, , "ShowWindow", , 控制窗口的状态(在vb里使用:针对vb窗体及控件,请使用对应的vb属性) 成功:返回TRUE(非零),失败:返回FALSE(零)
.参数 hwnd, 整数型, , 窗口句柄,要向这个窗口应用由命令
.参数 nCmdShow, 整数型, , 为窗口指定的一个命令。请用下述任何一个常数:0 隐藏取消激活 1 还原激活 2 最小化激活 3 最大化激活 4 还原 6 最小化取消激活 7 最小化 9 还原激活

4楼是个脑残,题目都没看青就在那回答,自己不懂还装懂
第2个回答  2013-04-28
最简单的就是看进程是否存在。
如果真 (进程是否存在(“”) = 真)
结束()
第3个回答  2013-04-28
很简单啊.超级模块.禁止重复运行() .OK了.