zoukankan      html  css  js  c++  java
  • 注册服务程序

    开发步骤:
    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);  这句实际上需要移动到 dpr文件中。
    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.CreateForm(TFmMain, FmMain);//经过实验 这里需要创建窗体 在service的 start 中创建不好使。
      Application.Run;
    {$ENDIF}
    这样我们就可以通过增加/删除NormalApp的编译条件来切换服务程序和普通窗口程序了

  • 相关阅读:
    Android--Android studio --布局管理
    Android--Android studio --Activity
    Android--Android studio --app运行
    Android--Android studio 工程目录分析
    Java--Niit-ch2--Location本地化问题
    C--循环实现和递归实现的比较
    C--函数调用
    【未完待续】Java蓝桥杯--算法训练 数学知识的运用
    【未完待续】Java蓝桥杯--算法训练(1)典型问题的递归框架
    NIIT2--JAVA活动(一)制作内部类 正则内部类
  • 原文地址:https://www.cnblogs.com/echomyecho/p/2512009.html
Copyright © 2011-2022 走看看