aardio 文档
aardio 范例: main.aardio
//RUNAS//
import service
service.serviceName = "testAardioSrv";
import fsys.log;
global.onError = function( err,over ){
if(!over){
import debug;
var stack = debug.traceback(,"调用栈",3);
}
fsys.log.print(err);
if( _STUDIO_INVOKED ) return err;
}
if( !_STUDIO_INVOKED ){
import service.simpleTool;
if( service.simpleTool.run(,"Test Aardio Service","这是一个测试服务") ){
//不是服务进程,可以直接双击运行生成的EXE文件,aardio会自动启动简易版服务管理工具。
return 0;
}
//这个函数用于在进程主线程中启动服务,并且会等待所有服务线程执行结束后才会返回
service.startDispatchThread({
//可以增加多个服务名与服务线程回调函数的键值对
[service.serviceName] = function(serviceName,argv){ //注意此服务回调函数运行于独立线程
import service.threads;
//服务线程启动后第一件事应当是注册服务控制线程
var srvStatus = service.registerCtrlThread(serviceName,service.threads.control)
//服务切换到运行状态
srvStatus.controlsAccepted = 0x1/*_SERVICE_ACCEPT_STOP*/
srvStatus.currentState = 0x4/*_SERVICE_RUNNING*/;
service.updateStatus(srvStatus,serviceName);
//启动服务主线程
service.threads.main(serviceName);
//原生多线程回调默认不支持 COM 接口,如下创建独立线程可以启用 COM 接口。
//thread.invokeEx(service.threads.main,serviceName);
//服务切换到停止状态
srvStatus.controlsAccepted = 0;
srvStatus.currentState = 0x1/*_SERVICE_STOPPED*/
service.updateStatus(srvStatus,serviceName)
}
})
}
else {
/*
后台服务可在系统启动时自动运行。
后台服务程序本质也是一个控制台程序,
因为后台服务调试不便,开发环境下可以这样启动服务主线程,作为一个普通控制台程序进行调试。
发布后在服务进程中启动以后,不能在用户桌面上直接显示界面,
但可以使用 service.msgbox() 等函数在当前用户桌面上显示交互对话框。
如果需要在桌面显示控制台输出,请在控制面板->管理工具->服务管理器中右键点击注册的服务,属性中勾选:本地系统服务->允许与桌面交互。
编写服务程序,可以调用fsys.log输出日志文件记录运行状态以及错误信息.
*/
import service.threads;
service.threads.main(service.serviceName);
}
Markdown 格式