搜索
查看: 7309|回复: 3

[已解决]请问aardio能不能设计作为系统服务的程序?

[复制链接]

8

主题

34

帖子

253

积分

新手入门

积分
253
发表于 2012-3-20 07:37:07 | 显示全部楼层 |阅读模式
本帖最后由 xauto 于 2012-6-4 19:54 编辑

请大家提供思路或范例(已完成)
回复

使用道具 举报

5

主题

442

帖子

2420

积分

五级会员

Rank: 8Rank: 8

积分
2420
发表于 2012-3-20 08:13:41 | 显示全部楼层

可以的,参考 [url=http://download.aardio.com/v10.files/exlibs.samples/service.zip]ht

可以的,参考
http://download.aardio.com/v10.files/exlibs.samples/service.zip


  1. //RUNAS//
  2. import service

  3. //用于接收命令行参数并自动注册后台服务
  4. if( #_ARGV ){
  5.     for( i=1;#_ARGV ){
  6.         if( _ARGV[i] == "/i" ){
  7.             service.create( ,"testAardioSrv","Test Aardio Service","这是一个测试服务")
  8.                     return;
  9.         }
  10.         if( _ARGV[i] == "/u" ){
  11.             service.delete( "testAardioSrv")
  12.                     return;
  13.         }
  14.     }
  15. }

  16. if( !_STUDIO_INVOKED ){

  17.         //这个函数用于在进程主线程中启动服务,并且会等待所有服务线程执行结束后才会返回
  18.         service.startDispatchThread(
  19.        
  20.             //可以增加多个服务名与服务线程回调函数的键值对
  21.             testAardioSrv = function(serviceName,argv){ //注意此服务回调函数运行于独立线程
  22.               
  23.                 import service.threads;
  24.                
  25.                 //服务线程启动后第一件事应当是注册服务控制线程
  26.                 var srvStatus = service.registerCtrlThread(serviceName,service.threads.control)
  27.                
  28.                 //服务切换到运行状态
  29.                 srvStatus.controlsAccepted = 0x1/*_SERVICE_ACCEPT_STOP*/
  30.                 srvStatus.currentState = 0x4/*_SERVICE_RUNNING*/;
  31.                 service.updateStatus(srvStatus,serviceName);
  32.                 
  33.                 //启动服务主线程
  34.                 service.threads.main(serviceName);
  35.                 
  36.                 //服务切换到停止状态
  37.                 srvStatus.controlsAccepted = 0;
  38.                 srvStatus.currentState = 0x1/*_SERVICE_STOPPED*/
  39.                 service.updateStatus(srvStatus,serviceName)
  40.             }
  41.         )
  42. }
  43. else {
  44.         /*
  45.         后台服务程序本质也是一个控制台程序,
  46.         因为后台服务调试不便,开发环境下可以这样启动服务主线程,作为一个普通控制台程序进行调试。
  47.        
  48.         发布后需要在桌面显示控制台输出,请在控制面板->管理工具->服务管理器中右键点击注册的服务,属性中勾选:本地系统服务->允许与桌面交互。
  49.         更好的方法是使用日志文件代替控制台输出。
  50.         */
  51.         import service.threads;
  52.     service.threads.main("testAardioSrv");
  53. }

复制代码

回复

使用道具 举报

0

主题

18

帖子

158

积分

一级会员

Rank: 2

积分
158
发表于 2013-11-6 09:26:47 | 显示全部楼层

学习了,多谢神码的经验。

学习了,多谢神码的经验。
回复

使用道具 举报

0

主题

10

帖子

58

积分

一级会员

Rank: 2

积分
58
发表于 2016-6-7 11:38:56 | 显示全部楼层

赞一个。谢谢分享。

赞一个。谢谢分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-10-21 03:51 , Processed in 0.062500 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表