易语言。检测某程序是否运行。

2025-03-04 02:17:46
推荐回答(2个)
回答1:

这个你需要先创建这个ppt的进程(超级模块里有),通过命令行的方式来投递欲执行文件的路径。
详细是这样的(之后就如葛大强老师所说的了):

.版本 2
.局部变量 关联的程序, 文本型
.局部变量 文件名, 文本型

文件名=“C:\1.ppt”
关联的程序 = 取后缀关联的程序 (“ppt”)

ID = 创建进程 (关联的程序, “ ” + #引号 + 文件名+ #引号 , 去路径文件名 (关联的程序))

再加时钟根据进程是否有效(ID),来判断这个PPT进程是否在

.版本 2
.子程序 创建进程, 整数型, 公开, 创建一个程序进程(成功返回进程ID,失败返回0)
.参数 程序路径, 文本型, , 欲创建进程的执行路径
.参数 命令行, 文本型, 可空, 附加上程序路径后的命令行参数
.参数 运行目录, 文本型, 可空, 通常留空,特殊情况下使用
.参数 进程结构, 进程结构, 参考 可空, 接收进程结构信息的变量
.局部变量 窗口结构, sby5ryt
.如果真 (运行目录 = “”)
运行目录 = 取文本左边 (程序路径, 倒找文本 (程序路径, “\”, , 假))
.如果真结束
_创建新进程2 (程序路径, 命令行, 0, 0, 0, 0, 0, 运行目录, 窗口结构, 进程结构)
返回 (进程结构.进程标识符)
.版本 2
.DLL命令 _创建新进程2, 整数型, , "CreateProcessA"
.参数 lpApplicationName, 文本型
.参数 lpCommandLine, 文本型
.参数 lpProcessAttributes, 整数型
.参数 lpThreadAttributes, 整数型
.参数 bInheritHandles, 整数型
.参数 dwCreationFlags, 整数型
.参数 lpEnvironment, 整数型
.参数 lpCurrentDriectory, 文本型
.参数 lpStartupInfo, sby5ryt
.参数 lpProcessInformation, 进程结构
.版本 2
.数据类型 进程结构, 公开
.成员 进程句柄, 整数型, , , hProcess
.成员 线程句柄, 整数型, , , hThread
.成员 进程标识符, 整数型, , , dwProcessId
.成员 线程标识符, 整数型, , , dwThreadId
.数据类型 sby5ryt
.成员 cbSize, 整数型
.成员 lpReserved, 整数型
.成员 lpDesktop, 整数型
.成员 lpTitle, 整数型
.成员 dwX, 整数型
.成员 dwY, 整数型
.成员 dwXSize, 整数型
.成员 dwYSize, 整数型
.成员 dwXCountChars, 整数型
.成员 dwYCountChars, 整数型
.成员 dwFillAttribute, 整数型
.成员 dwFlags, 整数型
.成员 wShowWindow, 长整数型
.成员 cbReserved2, 长整数型
.成员 lpReserved2, 整数型
.成员 hStdInput, 整数型
.成员 hStdOutput, 整数型
.成员 hStdError, 整数型

.子程序 去路径文件名, 文本型
.参数 路径, 文本型
返回 (子文本替换 (路径, “\” + 取文本右边 (路径, 取文本长度 (路径) - 倒找文本 (路径, “\”, , 假)), , , , 真))

.子程序 取后缀关联的程序, 文本型
.参数 扩展名, 文本型, , 必须为完整的扩展名其不带“.”
.局部变量 临时, 文本型, , "2"
临时 [1] = 取文本注册项 (1, “.” + 扩展名 + “\”, )
临时 [2] = 子文本替换 (子文本替换 (取文本之前 (取文本注册项 (1, 临时 [1] + “\Shell\Open\Command\”, ), #引号 + “ ”), #引号, , , 2, 真), “ %1”, , , , 真)
返回 (临时 [2])

.子程序 取文本之前, 文本型
.参数 被取的文本, 文本型
.参数 指定的文本, 文本型
.参数 是否包含指定文本, 逻辑型, 可空
.局部变量 文本, 文本型
文本 = 子文本替换 (被取的文本, 取文本中间 (被取的文本, 寻找文本 (被取的文本, 指定的文本, , 假), 取文本长度 (被取的文本) + 寻找文本 (被取的文本, 指定的文本, , 假)), , , , 真)
.如果真 (是否包含指定文本 = 真)
返回 (文本 + 指定的文本)
.如果真结束
返回 (文本)

.子程序 进程是否有效, 逻辑型, 公开, 判断进程ID是否有效(有效返回真,无效或失败返回假)
.参数 进程ID, 整数型, , 欲检测的进程标识
.局部变量 信息, s5yh5sgrty
.局部变量 进程快照, 整数型
.局部变量 进程句柄, 整数型
进程快照 = _创建快照 (15, 0)
.如果真 (进程快照 = 0)
返回 (假)
.如果真结束
信息.dwSize = 1024
进程句柄 = _第一个 (进程快照, 信息)
.判断循环首 (进程句柄 ≠ 0)
.如果真 (信息.srgyvr = 进程ID)
_关闭对象 (进程快照)
返回 (真)
.如果真结束
进程句柄 = _下一个 (进程快照, 信息)
.判断循环尾 ()
_关闭对象 (进程快照)
返回 (假)
.版本 2
.DLL命令 _创建快照, 整数型, , "CreateToolhelp32Snapshot"
.参数 falg, 整数型
.参数 id, 整数型
.DLL命令 _第一个, 整数型, , "Process32First"
.参数 h, 整数型
.参数 p, s5yh5sgrty
.DLL命令 _下一个, 整数型, , "Process32Next"
.参数 h, 整数型
.参数 p, s5yh5sgrty
.DLL命令 _关闭对象, 整数型, , "CloseHandle", , kernel32.dll
.参数 对象句柄, 整数型
.版本 2
.数据类型 s5yh5sgrty
.成员 dwSize, 整数型
.成员 cntUsage, 整数型
.成员 srgyvr, 整数型
.成员 th32DefaultHeapID, 整数型
.成员 syhhbr, 整数型
.成员 cntThreads, 整数型
.成员 th32ParentProcessID, 整数型
.成员 pcPriClassBase, 整数型
.成员 dwFlags, 整数型
.成员 进程名称, 字节型, , "256"

回答2:

使用时钟检测系统进程,有指定的程序则程序在运行。