关于Service Application(10分)

  • 主题发起人 主题发起人 yuchen
  • 开始时间 开始时间
Y

yuchen

Unregistered / Unconfirmed
GUEST, unregistred user!
我想写一个能够长贮内存但不在任务栏上显示的程序,主要是关闭随时可能打开的应用
程序,是获取窗体的WinText属性,然后关闭。我用了Service Application,但是它总是
运行一会儿就停止了,我在OnStop中添加了CreateNew函数再初始化一个Service对象,
并且allowstop和allowpause的属性都设为false,但不见效果。Service Application没用
过,也不知道怎么用(我这里的参考书都不介绍这个),只是知道它可以不被发现,不知
该怎么操作。Service Control Manager是个什么概念。也可能我彻底搞错了它的用途。
 
SC manager是系统用来调度和管理Service的

通常Service程序应该在开始的时候立即注册ServiceMain和Handler函数。
ServiceMain函数是Service的主体函数,当它运行结束时Service也就结束
了;而Handler函数是用来处理SC manager和Service之间的通讯的,通常
情况下需要处理stop信息和service状态汇报等。

在启动service时首先汇报状态为start pendding, 然后按需要初始化
程序,然后汇报start状态后进入循环等待状态,注意循环中需要加sleep
和application.processmessages,循环等待直到Handler函数收到stop命令,
给出一个退出信号。

退出时首先发送stop pendding状态,然后释放资源,最后再发送stop状态,
退出整个程序。

你所说的运行一会儿就停止了,可能是程序意外终止造成的。
因为初学Service的人往往是无法控制Service的停止。 ^_^
 
Iknow,能不能写一段程序给我看看,因为我这里没有现成的例子,你讲的抽象。或者你告诉我
什么书上可以找到。谢谢。
 
我也想要一段例程。
 
一个循环,这么可能乱停止?
 
Service默认好象是不能与界面交互的吧。
 
自己动态调用Form,没有问题的,好像写Control Panel程序一样
 
应该是先要在命令行界面运行你的服务,加上/install参数在系统中安装这个服务,再在控制面板中启动这个服务才行。
帮助上有说的吧
 
服务程序需要自已来维护一个循环,当条件为真时继续运行,当为假时退出
可以在服务的STOP事件中加入将条件置为假的代码
你的程序自动退出可能是因为程序有错
 
同意Hubert_Fu的说法。
我的服务程序,如果直接双击运行,过一会儿就会自动关闭,大约十几秒钟;
只有在INSTALL为NT服务后,从Service Control Manager或系统自动启动,才不会关闭。

我猜测大概是NT SERVICE程序在启动之后会等待服务控制系统连接,如果等待超时,
就会自动关闭。
 
另:你给的分怎么这么少?太那个了吧?
 
接受答案了.
 
后退
顶部