Service 对象
提供用于创建服务程序的一组工具
语法
Shell.Service[.property|method]
属性
Description | 服务描述,仅限于 Windows 2000 及以上版本 |
Desktop | 指定服务时候允许与桌面交互,缺省为 false |
DisplayName | 服务显示名称,服务在服务列表中显示的名称 |
Icon | 加载图标到对象中,支持的图标格式为:BMP (bitmap), JPEG, WMF (metafile), ICO (icon), GIF |
Installed | 查询当前服务是否已经安装 |
Name | 服务名,服务在服务列表中的名称 |
Running | 查询当前服务是否正在运行 |
TrayIcon | 查询与设置是否在系统托盘中显示本服务的图标,缺省为显示 |
方法
DoEvents | 进入服务事件等待 |
Install | 将当前的程序安装成为服务 |
LogEvent | 向系统日志中记录信息,仅 Windows NT 及以上系统支持 |
Remove | 从系统中删除指定的服务 |
RunService | 标准的服务支持方法,提供通常的服务安装、卸载、运行的封装 |
Restart | 重新启动系统中已安装的指定服务 |
SetTimer | 设定服务的定时器 |
Start | 启动系统中已安装的指定服务 |
Stop | 停止系统中以安装的指定服务 |
事件
OnServicePause | 服务暂停事件 |
OnServiceResume | 服务恢复事件 |
OnServiceStart | 服务初始化事件,仅在使用 RunService 方法建立服务时有效 |
OnServiceStop | 服务停止事件 |
OnServiceTimer | 服务定时器事件 |
注释
Service 作为 Shell 对象的内容,为主程序提供了服务编程的能力,通过使用 Service,可以在系统中安装、卸载服务,记录服务日志,设定定时器等。
Service 对象为不同的系统提供了不同的实现,所以无论在 Windows NT、Windows 2000 上面,还是在 Windows 98、Windows ME 上面都能够很好的运行,Windows 98、Windows ME 除了不支持记录日志以外,其他功能都有相应的实现,在所有的平台上面实现服务所需要的代码是完全相同的,实现了一套代码在不同平台上的移植。
在 Windows NT、Windows 2000 系统上面安装、运行服务时,NetBox 程序将被安装成为系统服务程序,在系统开始运行时自动运行,不需要登录系统。而如果服务程序在桌面被直接执行,则将被以 98 方式执行。关于 98 方式执行的 NetBox 服务,见下面的说明。
当在 Windows 98、Windows ME 系统上面安装、运行服务时,NetBox 程序将被安装成为 98 系统的服务,同样在每次启动系统时自动执行,不需要登录系统。同时,一旦用户登录系统,将在系统 Taskbar 上面建立一个管理图标,用户可以在其上面点鼠标右键进行管理。如果用户退出登录,程序将继续执行,不受影响。
如果需要自行安装一个 NetBox 应用为系统服务程序,比如使用通用安装程序部署应用,需要将服务以下面的命令方式安装成为服务:
path -Dispatch SrvName
其中 path 为应用程序的完整路径,SrvName 为应用的服务名称。
示例
下面的例子是一个完整的服务的例程,例子安装了一个服务,名称为“MySrv”,显示名称为“My Service Application”,如果在 Windows 2000 及以上系统,则详细描述设定为“This is my NetBox Service”。程序通过判断命令行参数来安装或卸载服务,并提供完整的服务事件的实现:
Set service = Shell.Service Set Arg = Shell.Arguments service.Name = "MySrv" service.DisplayName = "My Service Application" service.Description = "This is my NetBox Service" If LCase(Arg(1)) = "-install" Then service.Install Shell.Quit 0 ElseIf LCase(Arg(1)) = "-remove" Then service.Remove Shell.Quit 0 End If service.SetTimer 1000 service.DoEvents '---------------------- Service Event --------------------- Sub OnServiceStop End Sub Sub OnServicePause End Sub Sub OnServiceResume End Sub Sub OnServiceTimer Shell.Beep End Sub
也可以直接使用 RunService 方法实现服务,其代码更加简单。
Shell.Service.RunService "MySrv", "My Service Application", "This is my NetBox Service" '---------------------- Service Event --------------------- Sub OnServiceStart Shell.Service.SetTimer 1000 End Sub Sub OnServiceStop End Sub Sub OnServicePause End Sub Sub OnServiceResume End Sub Sub OnServiceTimer Shell.Beep End Sub