Delphi啟動/停止Windows服務,啟動類型修改為"自動"

來源:互聯網
上載者:User

標籤:

  1. unit U_StartServices;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, WinSVC, StdCtrls;
  6. type
  7.   TForm1 = class(TForm)
  8.     btn_StartServices: TButton;
  9.     btn_StopServices: TButton;
  10.     procedure btn_StartServicesClick(Sender: TObject);
  11.     procedure btn_StopServicesClick(Sender: TObject);
  12.   private
  13.     { Private declarations }
  14.   public
  15.     { Public declarations }
  16.   end;
  17. var
  18.   Form1: TForm1;
  19. function StartServices(const SvrName: string): Boolean;
  20. implementation
  21. {$R *.dfm}
  22. //開啟服務
  23. function StartServices(const SvrName: string): Boolean;
  24. var
  25.   SCH, SvcSCH: SC_HANDLE;
  26.   arg: PChar;
  27.   dwStartType: DWORD;
  28. begin
  29.   Result := False;
  30.   SCH := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  31.   if SCH <= 0 then Exit;
  32.   SvcSCH := OpenService(SCH, PChar(SvrName), SERVICE_ALL_ACCESS);
  33.   if (ChangeServiceConfig(
  34.     SvcSCH, //   handle   of   service
  35.     SERVICE_NO_CHANGE, //SERVICE_NO_CHANGE,   //   service   type:   no   change
  36.     SERVICE_AUTO_START, //   change   service   start   type
  37.     SERVICE_NO_CHANGE, //   error   control:   no   change
  38.     nil, //   binary   path:   no   change
  39.     nil, //   load   order   group:   no   change
  40.     nil, //   tag   ID:   no   change
  41.     nil, //   dependencies:   no   change
  42.     nil, //   account   name:   no   change
  43.     nil, //   password:   no   change
  44.     nil)) then
  45.     showmessage(‘Auto Start OK‘)
  46.   else
  47.     showmessage(‘Auto Start Error‘);
  48.     if SvcSCH <= 0 then Exit;
  49.   try
  50.     Result := StartService(SvcSCH, 0, arg);
  51.     CloseServiceHandle(SvcSCH);
  52.     CloseServiceHandle(SCH);
  53.   except
  54.     CloseServiceHandle(SvcSCH);
  55.     CloseServiceHandle(SCH);
  56.     Exit;
  57.   end;
  58. end;
  59. //停止服務
  60. function StopServices(const SvrName: string): Boolean;
  61. var
  62.   SCH, SvcSCH: SC_HANDLE;
  63.   SS: TServiceStatus;
  64. begin
  65.   Result := False;
  66.   SCH := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  67.   if SCH <= 0 then Exit;
  68.   SvcSCH := OpenService(SCH, PChar(SvrName), SERVICE_ALL_ACCESS);
  69.   if SvcSCH <= 0 then Exit;
  70.   try
  71.     Result := ControlService(SvcSCH, SERVICE_CONTROL_STOP, SS);
  72.     CloseServiceHandle(SCH);
  73.     CloseServiceHandle(SvcSCH);
  74.   except
  75.     CloseServiceHandle(SCH);
  76.     CloseServiceHandle(SvcSCH);
  77.     Exit;
  78.   end;
  79. end;
  80. procedure TForm1.btn_StartServicesClick(Sender: TObject);
  81. begin
  82.   if StartServices(‘PolicyAgent‘) = true then
  83.     application.MessageBox(PChar(‘PolicyAgent 服務啟動成功‘), PChar(‘服務資訊‘), MB_ICONINFORMATION)
  84.   else
  85.     application.MessageBox(PChar(‘PolicyAgent 服務啟動失敗‘), PChar(‘服務資訊‘), MB_ICONERROR);
  86. end;
  87. procedure TForm1.btn_StopServicesClick(Sender: TObject);
  88. begin
  89.   if StopServices(‘PolicyAgent‘) = true then
  90.     application.MessageBox(PChar(‘PolicyAgent 服務停止成功‘), PChar(‘服務資訊‘), MB_ICONINFORMATION)
  91.   else
  92.     application.MessageBox(PChar(‘PolicyAgent 服務停止成功‘), PChar(‘服務資訊‘), MB_ICONERROR);
  93. end;
  94. end.
複製代碼

 

http://www.appweixin.net/thread-67-1-1.html

Delphi啟動/停止Windows服務,啟動類型修改為"自動"

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.