创建具有托盘的服务程序

创建具有托盘的服务程序

ID:12628322

大小:37.50 KB

页数:8页

时间:2018-07-18

创建具有托盘的服务程序_第1页
创建具有托盘的服务程序_第2页
创建具有托盘的服务程序_第3页
创建具有托盘的服务程序_第4页
创建具有托盘的服务程序_第5页
资源描述:

《创建具有托盘的服务程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。