资源描述:
《创建具有托盘的服务程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、创建具有托盘的服务程序Windows2000/XP和2003等支持一种叫做"服务程序"的东西.程序作为服务启动有以下几个好处: (1)不用登陆进系统即可运行. (2)具有SYSTEM特权.所以你在进程管理器里面是无法结束它的. 笔者在2003年为一公司开发机顶盒项目的时候,曾经写过课件上传和媒体服务,下面就介绍一下如何用Delphi7创建一个Service程序. 运行Delphi7,选择菜单File-->New-->Other--->ServiceApplication.将生成一个
2、服务程序的框架.将工程保存为ServiceDemo.dpr和Unit_Main.pas,然后回到主框架.我们注意到,Service有几个属性.其中以下几个是我们比较常用的: (1)DisplayName:服务的显示名称 (2)Name:服务名称. 我们在这里将DisplayName的值改为"Delphi服务演示程序",Name改为"DelphiService".编译这个项目,将得到ServiceDemo.exe.这已经是一个服务程序了!进入CMD模式,切换致工程所在目录,运行命令"Ser
3、viceDemo.exe/install",将提示服务安装成功!然后"netstartDelphiService"将启动这个服务.进入控制面版-->管理工具-->服务,将显示这个服务和当前状态.不过这个服务现在什么也干不了,因为我们还没有写代码:)先"netstopDelphiService"停止再"ServiceDemo.exe/uninstall"删除这个服务.回到Delphi7的IDE. 我们的计划是为这个服务添加一个主窗口,运行后任务栏显示程序的图标,双击图标将显示主窗口,上面有一个按钮,点
4、击该按钮将实现Ctrl+Alt+Del功能. 实际上,服务程序莫认是工作于Winlogon桌面的,可以打开控制面板,查看我们刚才那个服务的属性-->登陆,其中"允许服务与桌面交互"是不打钩的.怎么办?呵呵,回到IDE,注意那个布尔属性:Interactive,当这个属性为True的时候,该服务程序就可以与桌面交互了. File-->New-->Form为服务添加窗口FrmMain,单元保存为Unit_FrmMain,并且把这个窗口设置为手工创建.完成后的代码如下:unitUnit_Main;i
5、nterfaceusesWindows,Messages,SysUtils,Classes,Graphics,Controls,SvcMgr,Dialogs,Unit_FrmMain;typeTDelphiService=class(TService)procedureServiceContinue(Sender:TService;varContinued:Boolean);procedureServiceExecute(Sender:TService);procedureServicePause(Sen
6、der:TService;varPaused:Boolean);procedureServiceShutdown(Sender:TService);procedureServiceStart(Sender:TService;varStarted:Boolean);procedureServiceStop(Sender:TService;varStopped:Boolean);private{Privatedeclarations}publicfunctionGetServiceController:TSe
7、rviceController;override;{Publicdeclarations}end;varDelphiService:TDelphiService;FrmMain:TFrmMain;implementation{$R*.DFM}procedureServiceController(CtrlCode:DWord);stdcall;begin DelphiService.Controller(CtrlCode);end;functionTDelphiService.GetServiceCont
8、roller:TServiceController;begin Result:=ServiceController;end;procedureTDelphiService.ServiceContinue(Sender:TService;varContinued:Boolean);begin whilenotTerminateddo begin Sleep(10); ServiceThread.ProcessR