系统服务模块易语言源码
.版本 2
.程序集 Service
.子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
_临时子程序 () ' 在初始化代码执行完毕后调用测试代码
返回 (0) ' 可以根据您的需要返回任意数值
.子程序 _临时子程序
.局部变量 FileList, FileList, , "0"
.局部变量 Num, 整数型
.局部变量 i, 整数型
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
Num = ScanPath (“D:\KuGou”, FileList)
.计次循环首 (Num, i)
' 调试输出 (FileList [i].FilePath, FileList [i].FileName)
.计次循环尾 ()
.子程序 ScanPath, 整数型, 公开
.参数 directory, 文本型
.参数 FileList, FileList, 数组
.参数 Folder, 文本型, 可空
.局部变量 FolderName, 文本型
.局部变量 FileName, 文本型
.局部变量 hFile, FileList
.如果真 (取文本右边 (directory, 1) = “\”)
directory = 取文本左边 (directory, 取文本长度 (directory) - 1)
.如果真结束
.如果真 (取文本右边 (Folder, 1) ≠ “\”)
Folder = Folder + “\”
.如果真结束
FileName = 寻找文件 (directory + Folder + “*.*”, )
.判断循环首 (FileName ≠ “”)
.如果真 (FileName ≠ “.” 且 FileName ≠ “..”)
hFile.Path = directory
hFile.FilePath = Folder
hFile.FileName = FileName
hFile.FileType = 0
加入成员 (FileList, hFile)
.如果真结束
FileName = 寻找文件 (, )
.判断循环尾 ()
FolderName = 寻找文件 (directory + Folder + “*.*”, #子目录 + #隐藏文件)
.判断循环首 (FolderName ≠ “”)
.如果真 (FolderName ≠ “.” 且 FolderName ≠ “..”)
hFile.Path = directory
hFile.FilePath = Folder + FolderName + “\”
hFile.FileName = 字符 (0)
hFile.FileType = 1
加入成员 (FileList, hFile)
ScanPath (directory, FileList, Folder + FolderName)
.如果真结束
FolderName = 寻找文件 (, #子目录 + #隐藏文件)
.判断循环尾 ()
返回 (取数组成员数 (FileList))
.子程序 _ServiceCreate, 逻辑型, 公开
.参数 lpServiceName, 文本型
.参数 lpBinaryPathName, 文本型
.参数 dwStartType, 整数型, 可空, .
.局部变量 hSCManager, 整数型
.局部变量 hService, 整数型
hSCManager = OpenSCManager (0, 0, 983103)
.如果真 (hSCManager ≠ 0)
dwStartType = 选择 (是否为空 (dwStartType), 3, dwStartType)
hService = CreateService (hSCManager, lpServiceName, lpServiceName, 983103, 32, dwStartType, 1, lpBinaryPathName, 0, 0, 0, 0, 0)
CloseServiceHandle (hService)
.如果真结束
CloseServiceHandle (hSCManager)
返回 (hService ≠ 0)
.子程序 _ServiceDelete, 逻辑型, 公开
.参数 lpServiceName, 文本型
.局部变量 hSCManager, 整数型
.局部变量 hService, 整数型
.局部变量 Status, SERVICE_STATUS
.局部变量 Code, 整数型
hSCManager = OpenSCManager (0, 0, 983103)
.如果真 (hSCManager ≠ 0)
hService = OpenService (hSCManager, lpServiceName, 65536)
.如果真 (hService ≠ 0)
Code = DeleteService (hService)
CloseServiceHandle (hService)
.如果真结束
.如果真结束
CloseServiceHandle (hSCManager)
返回 (Code = 1)
.子程序 _QueryServiceStatus, 整数型, 公开
.参数 lpServiceName, 文本型
.局部变量 hSCManager, 整数型
.局部变量 hService, 整数型
.局部变量 Status, SERVICE_STATUS
.局部变量 CurrentState, 整数型
hSCManager = OpenSCManager (0, 0, 983101)
.如果真 (hSCManager ≠ 0)
hService = OpenService (hSCManager, lpServiceName, 983551)
.判断开始 (hService ≠ 0)
.判断开始 (QueryServiceStatus (hService, Status))
CurrentState = Status.dwCurrentState
.默认
CloseServiceHandle (hService)
.判断结束
.默认
CloseServiceHandle (hSCManager)
.判断结束
.如果真结束
返回 (CurrentState)
.子程序 _ServiceStart, 逻辑型, 公开
.参数 lpServiceName, 文本型
.局部变量 hSCManager, 整数型
.局部变量 hService, 整数型
.局部变量 Code, 整数型
hSCManager = OpenSCManager (0, 0, 983103)
.如果真 (hSCManager ≠ 0)
hService = OpenService (hSCManager, lpServiceName, 16)
.如果真 (hService ≠ 0)
Code = StartService (hService, 0, 0)
CloseServiceHandle (hService)
.如果真结束
.如果真结束
CloseServiceHandle (hSCManager)
返回 (Code ≠ 0)
.子程序 _ServiceStop, 逻辑型, 公开
.参数 lpServiceName, 文本型
.局部变量 hSCManager, 整数型
.局部变量 hService, 整数型
.局部变量 Status, SERVICE_STATUS
.局部变量 Code, 整数型
hSCManager = OpenSCManager (0, 0, 1)
.如果真 (hSCManager ≠ 0)
hService = OpenService (hSCManager, lpServiceName, 32)
.如果真 (hSCManager ≠ 0)
Code = ControlService (hService, 1, Status)
CloseServiceHandle (hService)
.如果真结束
.如果真结束
CloseServiceHandle (hSCManager)
返回 (Code ≠ 0)
.子程序 ServiceStart, 逻辑型, 公开
.参数 lpServiceName, 文本型
.局部变量 Code, 整数型
.判断循环首 (_QueryServiceStatus (lpServiceName) = 3)
处理事件 ()
.判断循环尾 ()
_ServiceStart (lpServiceName)
.判断循环首 (_QueryServiceStatus (lpServiceName) = 2)
Code = _QueryServiceStatus (lpServiceName)
.如果真 (Code = 4 或 Code = 1)
跳出循环 ()
.如果真结束
处理事件 ()
.判断循环尾 ()
返回 (_QueryServiceStatus (lpServiceName) = 4)
.子程序 ServiceStop, 逻辑型, 公开
.参数 lpServiceName, 文本型
.局部变量 Code, 整数型
.判断循环首 (_QueryServiceStatus (lpServiceName) = 2)
处理事件 ()
.判断循环尾 ()
_ServiceStop (lpServiceName)
.判断循环首 (_QueryServiceStatus (lpServiceName) = 3)
Code = _QueryServiceStatus (lpServiceName)
.如果真 (Code = 1 或 Code = 4)
跳出循环 ()
.如果真结束
处理事件 ()
.判断循环尾 ()
返回 (_QueryServiceStatus (lpServiceName) = 1)
易语言取所有服务