怎么在Service运行过程中调整它的参数?(200分)

  • 主题发起人 主题发起人 DreamTiger
  • 开始时间 开始时间
D

DreamTiger

Unregistered / Unconfirmed
GUEST, unregistred user!
一个Service程序是运行在后台的,那么,怎么通过前台的设置窗口,
比如一个单独的设置程序,对后台正在运行的Service参数进行即时
的调整?也就是说,一个一般的Window程序,怎么和一个Service进
行交流?
 
你这个问题你说的不是很清楚,我不大清楚你所说的Service程序是服务器端的还是客户
端本身的。对此问题我提供两种方法:
1、服务器端
你可以以数据包的方式更新Service的参数
2、本地
你就用把变量设为Public的方式
 
服务运行时修改参数,要重新运行服务才可以生效
使用windows api可以对service 进行操作
1 打开服务管理库(具体记不清楚了)
2 从服务管理库中找到 要操作的nt service 即可

search service in the offline delphibbs database u can find the detail code
good luck
 
我说的是本地机器上的,也就是说,修改配置的程序和Service是运行
在同一台机器上。打个最简单的比方:我想做一个Email服务器,当然
希望它一开机就启动,那就只能做成Service。那么,如果要调整一些
参数,比如要增加用户,又不希望停掉这个Service,否则,我直接修
改配置文件,让Service重起读取一下当然可以。

通过共享内存应该是一种方法,不过,我想知道一下,在这方面,有
没有什么通用的方法,大家一般是怎么做的。
 
你可以把这些数据存到数据库里面阿,读取属性的时候直接从数据库中读阿,你通过共享
内存也是一种方法,但是你修改的属性是要长久保存的阿
 
通过windows消息通知service更新参数也是可以的
 
这是一个典型的进程间通讯(IPC)的问题,其可通过
1、扫描共享文件
2、共享内存区
3、向另外一个进程发MESSAGE
4、命名管道
5、剪切板
6、SOCKET
7、COM
等方式实现。
 
空值程序用 OpenSCManager、OpenService、ControlService
这个ControlService,他的控制代码除了停止、暂停之类的预定义的之外
还可以使用 128 到 255 的数字作为自定义的控制码,你的service对自定义的控制码作出
对应的反应就可以了
 
Pipi说得对!
这是标准的做法:通过windows消息通知service
我的好几个程序就是这样做的!

另外,Service也可以有UI,不一定非得用另外的程序来控制!只需要将Service做成可交互的,再做一个TrayIcon,就可以Show其它的Form了
当然,还需要切换用户身份(因为Service是以System运行,显示Form需要切换到当前用户身份)
 
primer:
有没有这种交互的service的例子?不需要很复杂,只要实现了service,同时
又能够实现UI交互功能就可以了。这样我的题目也就可以over了。谢谢。
 
有一个控件svcom,它的网址是:
http://www.aldyn.ru/products/svcom.html

它简化了写Service的过程,并且它的网站上有一些例子,你可以看一下........
不过我有点没有搞清楚,为何它的例子可以直接show form,不需切换用户身份,但我写的程序就不行,必须切换用户身份...
 
后退
顶部