开发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的编译条件来切换服务程序和普通窗口程序了

开发WINDOWS服务程序的更多相关文章

  1. 关于开发Windows服务程序容易搞混的地方!

    在开发Windows服务程序时,我们一般需要添加安装程序,即:serviceInstaller,里面有几个关于名称属性,你都搞明白了吗? 1.Description:表示服务说明(描述服务是干什么的) ...

  2. vs下开发windows服务程序

    一. VS2012下开发Windows服务 1. 打开VS2012,新建项目,选择Windows服务,此处我以开发一个定时自动发送邮件的服务来做介绍,如下图: 2. 创建好后,编译器会自动创建一些文件 ...

  3. Delphi开发Windows服务程序

    开发步骤: 1.New->Other->Service Application 2.现在一个服务程序的框架已经搭起来了 打开Service1窗口,有几个属性说明一下: AllowPause ...

  4. 使用Visual Studio 2015 Community 开发windows服务

    昨天研究在.NET下开发Windows服务程序,期间遇到一些小问题,这里仅将自己的开发过程和需要注意的地方写下和广大网友分享……  1.基础   Windows服务是指系统启动时能够自己运行的程序.W ...

  5. .net开发windows服务

    最近一个月都异常的繁忙,项目进度非常的紧,回头看看自己的blog,整整一个5月都没有一篇文章,非常惭愧,现在补几篇文章,介绍一下我最近关注的技术.这篇文章将介绍Windows服务程序的开发.摘要:本文 ...

  6. .net Windows服务程序和安装程序制作图解 及 VS 2010创建、安装、调试 windows服务(windows service)

    .net Windows服务程序和安装程序制作 最近项目中用到window服务程序,以前没接触过,比较陌生,花了两天的时间学习了下,写了个简单的服务,但在制作安装程序的时候,参照网上很多资料,却都制作 ...

  7. vs2015开发Windows服务

    工作已经很久,时隔这么长时间写这篇文章是给自己以后做参考.也不至于以后长时间不写Windows服务而忘记整个开发过程.windows服务开发,基础的就不说了,直接上过程. 1.新建windows服务项 ...

  8. C#/.NET基于Topshelf创建Windows服务程序及服务的安装和卸载(极速,简洁)

    本文首发于:码友网--一个专注.NET/.NET Core开发的编程爱好者社区. 文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf ...

  9. C#开发Windows服务详细流程

    1.Windows服务简单介绍 Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序,主要用于长时间运行的功能或者执行定时任务.一般情况下,用户不能通过用户界面来安装和启 ...

随机推荐

  1. ABAP Netweaver体内的那些寄生式编程语言

    今天这篇文章的主题是:寄生. Jerry最近看到朋友圈里一位朋友分享的一张寄居蟹的照片,对于Jerry这种在内地长大的又很宅的人来说,没有机会看到寄居蟹,所以觉得很新鲜: 寄居蟹主要以螺壳为寄体,寄居 ...

  2. JAVA 判断给定目录的大小

    题目:给定一个目录,判断该目录的大小,单位为G 思路: 递归拿到目录的子文件,然后取长度,累加 public class FileDemo02 { public static void main(St ...

  3. charles overvoew

    本文参考:charles overvoew 这里是请求文件的概览 对HTTP/s分析非常重要 基本上常见的HTTP相关字段都有: Charles is a web proxy (HTTP Proxy ...

  4. 数据库索引碎片——数据库sql

    文章:检测和整理索引碎片 文章:[笔记整理]SQL Server 索引碎片 和 重建索引 文章介绍了检查表的索引碎片百分比 文章:[小问题笔记(八)] 常用SQL(读字段名,改字段名,打印影响行数,添 ...

  5. jade属性怎么写

    关于元素和标签,可能傻傻分不清楚,什么是元素,什么是标签,举个例子 比如div是一个块状元素,那么尖括号包起来的是标签,他用来标记这个元素,尖括号里面是元素名,元素是由开始和结束标签组成,用来包含内容 ...

  6. 'Cloud Native': What It Means, Why It Matters

    When HP announced July 28 that it was acquiring ActiveState's PaaS business, senior vice president B ...

  7. /tmp/supervisor.sock no such file 报错

    背景: 在执行 supervisorctl 时,报了这么一个错(如图),查找对应文档后解决,记录下来用来以后遇到使用 解决: 1. 将 supervisord.conf 文件下对应的 /tmp  目录 ...

  8. SQL SERVER表变量和临时表

    一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约 ...

  9. Gitlab,Mac下生成SSH Key222

         git是分布式的代码管理工具,远程的代码管理是基于ssh的,所以要使用远程的git则需要ssh的配置.简单的说,Git - 版本控制工具:Github是一个网站,提供给用户空间创建git仓储 ...

  10. Java7--try - with - resources

    从 Java 7 build 105 版本开始,Java 7 的编译器和运行环境支持新的 try-with-resources 语句,称为 ARM 块(Automatic Resource Manag ...