|
|
发表于 2012-3-20 08:13:41
|
显示全部楼层
可以的,参考
http://download.aardio.com/v10.files/exlibs.samples/service.zip
- //RUNAS//
- import service
-
- //用于接收命令行参数并自动注册后台服务
- if( #_ARGV ){
- for( i=1;#_ARGV ){
- if( _ARGV[i] == "/i" ){
- service.create( ,"testAardioSrv","Test Aardio Service","这是一个测试服务")
- return;
- }
- if( _ARGV[i] == "/u" ){
- service.delete( "testAardioSrv")
- return;
- }
- }
- }
- if( !_STUDIO_INVOKED ){
- //这个函数用于在进程主线程中启动服务,并且会等待所有服务线程执行结束后才会返回
- service.startDispatchThread(
-
- //可以增加多个服务名与服务线程回调函数的键值对
- testAardioSrv = 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);
-
- //服务切换到停止状态
- srvStatus.controlsAccepted = 0;
- srvStatus.currentState = 0x1/*_SERVICE_STOPPED*/
- service.updateStatus(srvStatus,serviceName)
- }
- )
- }
- else {
- /*
- 后台服务程序本质也是一个控制台程序,
- 因为后台服务调试不便,开发环境下可以这样启动服务主线程,作为一个普通控制台程序进行调试。
-
- 发布后需要在桌面显示控制台输出,请在控制面板->管理工具->服务管理器中右键点击注册的服务,属性中勾选:本地系统服务->允许与桌面交互。
- 更好的方法是使用日志文件代替控制台输出。
- */
- import service.threads;
- service.threads.main("testAardioSrv");
- }
复制代码
|
|