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服务程序教程相关推荐

  1. c#开发Windows服务程序指南

    转载:http://sunday.blog.51cto.com/360410/94315 本文将较为详细的介绍如何在.net下开发Windows服务程序,并将简要介绍一些开发中的调试技巧及后期的部署问 ...

  2. c#开发Windows服务程序及部署

    Windows服务程序通常是一种在OS的后台长期运行的程序,根据需要你可以设置为随服务器启动而同时启动等等,在传统的C/S结构的程序开发中,Windows服务更是以Server端普遍存在.在.NET应 ...

  3. .NET开发Windows服务

    一.概述 本文旨在简单论述如何开发Windows服务程序. 服务名称:ServiceTest 实验环境:VS2015 最终程序结构: 二.步骤 1.创建一个项目,选择Windows 服务,更改项目名称 ...

  4. 【天嵌使用教程】嵌入式主板VS2008开发windows C#基本流程

    第二期[天嵌使用教程],将对部分天嵌嵌入式开发板如何使用VS2008开发windows C#进行基础说明.其中,包括新建C#工程,设置网络同步方式,调试C#程序.整个教程将在WINCE环境下进行,使用 ...

  5. C#使用Topshelf和Quartz开发处理定时任务的Windows服务程序

    C#使用Topshelf框架和Quartz开发处理定时任务的Windows服务程序 背景 依赖 C#代码示例 任务调度的配置文件 测试 服务安装.启动.停止.卸载 背景 有些业务是运行在后台,需要界面 ...

  6. 基于PyQt5的图形化界面开发——Windows内存资源监视助手[附带编译exe教程]

    基于PyQt5的图形化界面开发--Windows内存资源监视助手[附带编译exe教程] 0. 前言 1. 资源信息获取函数--monitor.py 2. UI界面--listen.py 3. main ...

  7. windows 服务程序和桌面程序集成(一)

    本系列文章介绍如何将windows服务程序和桌面程序集成在一起,也就是说一个EXE程序,既可以作为服务程序运行,也可以作为桌面程序运行的双模程序. 在十几年前,曾经给客户开发一套C/S架构的出单程序, ...

  8. Delphi 内存机制 调试教程

    Delphi 内存机制 调试教程 2011年10月21日 一.引言 FastMM 是适用于delphi的第三方内存管理器,在国外已经是大名鼎鼎,在国内也有许多人在使用或者希望使用,就连 Borland ...

  9. 关于用DELPHI开发服务器软件中的一些经验

    保存 评价 游戏规则 免费注册 资料下载 关于本站 问题分类 编程问题 非技术题 富翁列表 我的信息 提出问题 在线富翁 富翁日历 笔记列表 我的笔记 写作笔记 全文检索 <专家门诊> / ...

  10. C#游戏开发快速入门教程Unity5.5教程

    C#游戏开发快速入门教程Unity5.5教程 试读文档下载地址:http://pan.baidu.com/s/1slwBHoD C#是微软发布的高级程序设计语言,这门语言和C语言一样,已经成为了大学计 ...

最新文章

  1. 普林斯顿中国籍教授:中国学生是怎样被一步步淘汰掉的?
  2. 关于fragment backstate的运用
  3. mysql存储过程套嵌_mysql存储过程套嵌
  4. LG电子成功进行太赫兹频段6G无线信号传输,距离超过100米
  5. 电脑安装系统后出现no bootable device_炉石传说:用电脑领取安卓和iOS专属卡包你能信?亲测有效!...
  6. unix环境高级编程基础知识之第一篇
  7. python开发精典课程_Andrew Ng经典机器学习课程的Python实现(第1部分)
  8. KCP - A Fast and Reliable ARQ Protocol
  9. php是日元吗,PHP to JPY
  10. 动态设置div的高度_DIV块和文字水平垂直居中,点击弹出文字提示
  11. python中options类_python命令行参数解析OptionParser类用法实例
  12. c语言字符串常量表达,C语言基础教程:字符常量和字符串常量
  13. “海天”们推新、“饭爷”们加速;调味料升级战谁能突围?
  14. 转载nbsp;图像阈值选取
  15. 在SQL server 2008 R2进行数据查询操作时提示 “对象名无效”的问题
  16. Lettuce: Connection to x.x.x.x not allowed. This connection point is not known in the cluster view
  17. zkteco iface702 中控考勤机java开发步骤二---获取考勤机 的考勤数据
  18. 蒲公英内测托管平台进行内测分发教程
  19. 完美解决iphone连电脑蓝牙出现bluetooth外围设备无法正确安装
  20. 苹果和小虫编程c语言,【OJ题库C/C++】Day12-苹果和虫子2

热门文章

  1. xp sp3 java_windows xp sp3简体中文正式版官网下载
  2. 如何一键查看你的QQ/绑定了多少应用?
  3. java目录结构_Java项目目录结构解释
  4. (尚硅谷)2022 版 MyBatis 教程笔记一
  5. 关于SQL注入及防御
  6. rost反剽窃检测系统_论文为什么需要进行查重检测?
  7. MySQL日期时间转换函数
  8. 计算机组成原理 王道考研2021 第一章:计算机组成原理概述 -- 本章小结、常见问题和易混淆知识点
  9. BAT54C不断电源保护电路
  10. Kali WiFi嗅探破解与字典生成