易语言怎么禁止重复运行,如果重复运行则弹出已经在托盘运行的程序窗口

2024-12-31 17:52:31
推荐回答(5个)
回答1:

创建一个 互斥体 ,其它判断都是不最理想的,而且创建互斥体也就几个API的事
‘以下是API声明及数据类型
.版本 2
.DLL命令 CreateMutex, 整数型, "kernel32.dll", "CreateMutexA"
.参数 互斥体结构, SECURITY_ATTRIBUTES
.参数 拥有互斥体, 逻辑型
.参数 互斥体对象的名字, 文本型
.DLL命令 WaitForSingleObject, 整数型, , "WaitForSingleObject"

.参数 hHandle, 整数型
.参数 dwMilliseconds, 整数型
.DLL命令 ReleaseMutex, 整数型, "kernel32.dll", "ReleaseMutex"

.参数 hMutex, 整数型
.DLL命令 CloseHandle, 逻辑型, , "CloseHandle", 公开

.参数 hObject, 整数型

.版本 2
.数据类型 SECURITY_ATTRIBUTES, , 安全性结构;
.成员 nLength, 整数型
.成员 lpSecurityDescriptor, 整数型
.成员 bInheritHandle, 整数型

‘以下是子程序代码
.版本 2
.子程序 系统_禁止重复运行, 逻辑型, 公开, 已经运行返回真,否则返回假
.参数 特征字串, 文本型
.局部变量 句柄, 整数型
.局部变量 安全结构, SECURITY_ATTRIBUTES
句柄 = CreateMutex (安全结构, 真, 特征字串)’特征字串 是判断是否存在这个互斥体
.如果真 (WaitForSingleObject (句柄, 100) = 258)
ReleaseMutex (句柄)
CloseHandle (句柄)
返回 (真)
.如果真结束
返回 (假)

回答2:

很简单,用如果来判定,然后取进程,检查是否运行,,,

回答3:

给你个源码把!
准备:单一实例控件一个
------------------------------------------华丽的分割线--------------------------------------------
.版本 2
.支持库 vclbase
.程序集 窗口程序集1
.子程序 __启动窗口_创建完毕
.如果 (单一实例1.实例已存在)
信息框 (“对不起,程序已经在运行了!”, #警告图标, “对不起”)
销毁 ()
.否则
.如果结束

回答4:

进程检测呀,每个程序运行都会在有个进程啊,可以设置查找进程,如果存在就提示正在运行禁止启动,就像检测游戏多开吧,不存在就不反馈啊。

回答5:

单一实例 易语言有这个控件