Delphi开发Windows服务程序教程
Delphi开发Windows服务程序教程<一>
开发步骤:
1、New->Other->Service Application
2、现在一个服务程序的框架已经搭起来了,打开Service1窗口,有几个属性说明一下:
AllowPause:是否允许暂停
AllowStop: 是否允许停止
Dependencies: 设置服务的依存关系,服务的启动是否依赖于某个服务或者组
DisplayName: 在“服务”窗口显示的名称
Interactive: 设置为true时可以和Windows桌面进行交互,如果我们想在服务里显示窗体的话此设置就要设置为true,另外ServiceType必须为stWin32
Password: 密码
StartType: 启动方式
3、如果我们想让服务与窗体交互,步骤如下:
在工程中新建一个窗体fmMain
然后在Service1的OnStart中写代码
procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
Started := True;
Svcmgr.Application.CreateForm(TFmMain, fmMain);
FmMain.show;
end;
OnStop的代码
procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
Stopped := True;
FmMain.Free;
end;
这样在服务启动的时候就会显示出新建的那个窗体
4、编译完成后,我们可以安装服务了,安装方法为:
在cmd窗口中执行 appname /install,
如F:\Book\DService\Project1.exe /install
这样服务就安装完成了
5、同样,删除时也是在cmd窗口输入命令 appname /uninstall
如F:\Book\DService\Project1.exe /uninstall
关于其他:
1、关于服务程序的调试
如果我们开发的服务有多个窗体,程序的调试无疑是个大问题
其实服务程序稍微一改就能改成一个标准的Win32工程,为了防止不停的变来变去,我们可以加上一个编译条件,通过编译条件来切换生成服务程序还是普通可执行程序,假设编译条件为 NormalApp,在以下几个地方需要加入编译条件
工程文件中,单元的引用
{$IFDEF NormalApp}
Forms,
{$ELSE}
SvcMgr,
{$ENDIF}
工程初始化
{$IFDEF NormalApp}
Application.Initialize;
Application.CreateForm(TFmMain, FmMain);
Application.Run;
{$ELSE}
if not Application.DelayInitialize or Application.Installing then
Application.Initialize;
Application.CreateForm(TService1, Service1);
Application.Run;
{$ENDIF}
这样我们就可以通过增加/删除NormalApp的编译条件来切换服务程序和普通窗口程序了
Delphi开发Windows服务程序教程相关推荐
- c#开发Windows服务程序指南
转载:http://sunday.blog.51cto.com/360410/94315 本文将较为详细的介绍如何在.net下开发Windows服务程序,并将简要介绍一些开发中的调试技巧及后期的部署问 ...
- c#开发Windows服务程序及部署
Windows服务程序通常是一种在OS的后台长期运行的程序,根据需要你可以设置为随服务器启动而同时启动等等,在传统的C/S结构的程序开发中,Windows服务更是以Server端普遍存在.在.NET应 ...
- .NET开发Windows服务
一.概述 本文旨在简单论述如何开发Windows服务程序. 服务名称:ServiceTest 实验环境:VS2015 最终程序结构: 二.步骤 1.创建一个项目,选择Windows 服务,更改项目名称 ...
- 【天嵌使用教程】嵌入式主板VS2008开发windows C#基本流程
第二期[天嵌使用教程],将对部分天嵌嵌入式开发板如何使用VS2008开发windows C#进行基础说明.其中,包括新建C#工程,设置网络同步方式,调试C#程序.整个教程将在WINCE环境下进行,使用 ...
- C#使用Topshelf和Quartz开发处理定时任务的Windows服务程序
C#使用Topshelf框架和Quartz开发处理定时任务的Windows服务程序 背景 依赖 C#代码示例 任务调度的配置文件 测试 服务安装.启动.停止.卸载 背景 有些业务是运行在后台,需要界面 ...
- 基于PyQt5的图形化界面开发——Windows内存资源监视助手[附带编译exe教程]
基于PyQt5的图形化界面开发--Windows内存资源监视助手[附带编译exe教程] 0. 前言 1. 资源信息获取函数--monitor.py 2. UI界面--listen.py 3. main ...
- windows 服务程序和桌面程序集成(一)
本系列文章介绍如何将windows服务程序和桌面程序集成在一起,也就是说一个EXE程序,既可以作为服务程序运行,也可以作为桌面程序运行的双模程序. 在十几年前,曾经给客户开发一套C/S架构的出单程序, ...
- Delphi 内存机制 调试教程
Delphi 内存机制 调试教程 2011年10月21日 一.引言 FastMM 是适用于delphi的第三方内存管理器,在国外已经是大名鼎鼎,在国内也有许多人在使用或者希望使用,就连 Borland ...
- 关于用DELPHI开发服务器软件中的一些经验
保存 评价 游戏规则 免费注册 资料下载 关于本站 问题分类 编程问题 非技术题 富翁列表 我的信息 提出问题 在线富翁 富翁日历 笔记列表 我的笔记 写作笔记 全文检索 <专家门诊> / ...
- C#游戏开发快速入门教程Unity5.5教程
C#游戏开发快速入门教程Unity5.5教程 试读文档下载地址:http://pan.baidu.com/s/1slwBHoD C#是微软发布的高级程序设计语言,这门语言和C语言一样,已经成为了大学计 ...
最新文章
- 普林斯顿中国籍教授:中国学生是怎样被一步步淘汰掉的?
- 关于fragment backstate的运用
- mysql存储过程套嵌_mysql存储过程套嵌
- LG电子成功进行太赫兹频段6G无线信号传输,距离超过100米
- 电脑安装系统后出现no bootable device_炉石传说:用电脑领取安卓和iOS专属卡包你能信?亲测有效!...
- unix环境高级编程基础知识之第一篇
- python开发精典课程_Andrew Ng经典机器学习课程的Python实现(第1部分)
- KCP - A Fast and Reliable ARQ Protocol
- php是日元吗,PHP to JPY
- 动态设置div的高度_DIV块和文字水平垂直居中,点击弹出文字提示
- python中options类_python命令行参数解析OptionParser类用法实例
- c语言字符串常量表达,C语言基础教程:字符常量和字符串常量
- “海天”们推新、“饭爷”们加速;调味料升级战谁能突围?
- 转载nbsp;图像阈值选取
- 在SQL server 2008 R2进行数据查询操作时提示 “对象名无效”的问题
- Lettuce: Connection to x.x.x.x not allowed. This connection point is not known in the cluster view
- zkteco iface702 中控考勤机java开发步骤二---获取考勤机 的考勤数据
- 蒲公英内测托管平台进行内测分发教程
- 完美解决iphone连电脑蓝牙出现bluetooth外围设备无法正确安装
- 苹果和小虫编程c语言,【OJ题库C/C++】Day12-苹果和虫子2