cb 服务程序开发

好久没有写东西了,实在是太懒惰了,前一阵写了一个服务程序,觉得挺简单的,但是某日一位小弟却来求救,声称服务程序很灵异,为此研究了一下,果然有点意思:

一、服务程序的创建:

其实服务程序的开发很简单,只要选择菜单File-->New-->Other--->Service Application即可创建一个服务程序,工程创建后将自动生成一个service模块。这样一个服务程序就已经生成了,修改工程名称为myservice.exe,将service的DisplayName修改为:我的service,Name修改为MyService。

顾名思义:这里分别设置了程序名称,服务的显示名称和服务名。

这些工作做完,服务就可以编译运行了。

二、运行的方法:

在cmd模式,进入程序所在路径下运行以下命令:

安装服务:myservice.exe /install 回车  ——这里用程序文件名

启动服务:net start myservice 回车     ——这里用service的Name

停止服务:net stop myservice 回车      ——这里用service的Name

卸载服务:myservice.exe /uninstall 回车  ——这里用程序文件名

三、在服务启动时现实一个窗口:

怎么样是不是很简单,不过要想在程序启动时显示一个提示,就变得很有意思了,因为SvcMgr和Forms单元中都有Application定义,因此在服务程序中使用窗体有一些限制。

首先,你可能会想到MessageBox,不幸的是SvcMgr::Application中没有MessageBox方法;

其次,尝试使用ShowMessage,结果服务能正确安装,但是一直在启动,停止、暂停、重起状态没有加载上,更悲剧的是服务状态显示是启动,但是实际没启动,又不能关闭,又不能卸载,最后忍无可忍用命令:sc delete myservice才把它搞掉。

最后,没办法只好新建了一个Form来显示提示信息,在service的onstart事件中写入以下代码:

  TForm2 * nf = new TForm2(Application);
  nf->Label1->Caption = "启动成功!";
  nf->Show( );
  Started = true;
  ReportStatus();
  LogMessage(DateTimeToStr(Now())+" 服务启动",EVENTLOG_INFORMATION_TYPE,0,0);

安装运行服务正常,可是窗口没弹出来。

注意:这里需要做一下设置,将service的interactive属性设为true即可以看到窗口了。

自己动手试一下吧,好运。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值