楼上的回答 调用dll命令的,太复杂,我有简单的。
.版本 2
.支持库 eAPI
.子程序 进程是否重复, 逻辑型, 公开, 如果相同的进程名称有2个或以上,则返回 真,1个或以下则返回 假。
.参数 待检测进程, 文本型, , 进程名称,例:"QQ.exe"
.局部变量 进程数组, 进程信息, , "0"
.局部变量 n, 整数型
.局部变量 判断重复, 整数型
进程数组 = 取系统进程列表 ()
.计次循环首 (取数组成员数 (进程数组), n)
.如果真 (到小写 (进程数组 [n].进程名称) = 到小写 (待检测进程))
判断重复 = 判断重复 + 1
.如果真 (判断重复 ≥ 2)
返回 (真)
.如果真结束
.如果真结束
处理事件 ()
.计次循环尾 ()
返回 (假)
––––––––––
调用子程序例子:
如果真(进程是否重复(“本软件名称.exe”)=真)
信息框("本程序正在运行中,禁止重复运行",0,,)
返回()
如果真结束
2022-03-17 广告
-------------------------------------------------------------
DLL中的API
-------------------------------------------------------------
.版本 2
.DLL命令 OpenEventA, 整数型, , "OpenEventA", 公开, 打开事件同步对象
.参数 dwDesiredAccess, 整数型
.参数 bInheritHandle, 逻辑型
.参数 lpName, 文本型
.版本 2
.DLL命令 CreateEvent, 整数型, "Kernel32.dll", "CreateEventA", 公开, 创建事件同步对象
.参数 lpEventAttributes, 整数型
.参数 bManualReset, 逻辑型
.参数 bInitialState, 逻辑型
.参数 lpName, 文本型
.版本 2
.DLL命令 ShowWindow, 逻辑型, "user32.dll", "ShowWindow", 公开, 窗口_置状态
.参数 hwnd, 整数型, , 窗口句柄,要向这个窗口应用由命令
.参数 nCmdShow, 整数型, , 为窗口指定的一个命令。请用下述任何一个常数:0 隐藏取消激活 1 还原激活 2 最小化激活 3 最大化激活 4 还原 6 最小化取消激活 7 最小化 9 还原激活
.版本 2
.DLL命令 SetForegroundWindow, 逻辑型, "user32.dll", "SetForegroundWindow", 公开, 窗口_置焦点 将窗口设为系统的前台窗口。这个函数可用于改变用户目前正在操作的应用程序
.参数 句柄, 整数型
.版本 2
.DLL命令 SetWindowPos, , "user32.dll", "SetWindowPos", 公开, _窗口置最前
.参数 hwnd, 整数型, , 欲定位的窗口
.参数 hWndInsertAfter, 整数型
.参数 x, 整数型, , 窗口新的x坐标。如hwnd是一个子窗口,则x用父窗口的客户区坐标表示
.参数 y, 整数型, , 窗口新的y坐标。如hwnd是一个子窗口,则y用父窗口的客户区坐标表示
.参数cx,整数型,,指定新的窗口宽度
.参数cy,整数型,,指定新的窗口高度
.参数 wFlags, 整数型
-------------------------------------------------------------
程序集中的子程序
-------------------------------------------------------------
.版本 2
.子程序 窗口_强制显示, , 公开, 对窗口进行置顶、激活等操作
.参数 句柄, 整数型
.参数 总在最前, 逻辑型, 可空, 默认为假:取消总在最前 真:总在最前
ShowWindow (句柄, 9)
SetForegroundWindow (句柄)
.如果 (总在最前)
SetWindowPos (句柄, -1, 0, 0, 0, 0, 3)
.否则
SetWindowPos (句柄, -2, 0, 0, 0, 0, 3)
.版本 2
.子程序 程序_禁止重复运行, , 公开
.参数 标识文本, 文本型, 可空, 尽量输复杂一点的文本
.参数 是否弹出信息框提示, 逻辑型, 可空, 默认为假,不弹出提示;
.参数 消息框提示文本, 文本型, 可空, 第二个参数设置为假,该参数则无效
.参数 消息框提示图标, 整数型, 可空, 默认为信息图标,如:#信息图标
.参数 是否前端显示程序, 逻辑型, 可空, 如果已重复运行,是否将程序在前端显示
.如果真 (标识文本 = “”)
标识文本 = 取运行目录 () + “\” + 取执行文件名 () ' 标识文本,如果有重复的,就不能打开事件,实现禁止
标识文本 = 子文本替换 (标识文本, “\”, “/”, , , 真)
.如果真结束
.如果真 (OpenEventA (2031619, 假, 标识文本) ≠ 0)
.如果真 (是否弹出信息框提示)
.如果真 (是否为空 (消息框提示文本))
消息框提示文本 = “对不起,该进程已打开!”
.如果真结束
信息框 (消息框提示文本, 消息框提示图标, “友情提醒:”)
.如果真结束
.如果真 (是否前端显示程序)
窗口_强制显示 (进程_名取句柄 (取执行文件名 ()))
.如果真结束
结束 ()
.如果真结束
CreateEvent (0, 假, 假, 标识文本)
--------------------------------------------
调用方法
--------------------------------------------
程序_禁止重复运行(“这里放一串复杂文本,多点符号做为程序运行标识”,真,“程序已在运行中,请不要重复运行!”,#信息图标)
其实,这些东西 在精易模块中都有,下载个源码回来学习下就好