MyServiceConsole.dpr 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. program MyServiceConsole;
  2. {$APPTYPE CONSOLE}
  3. {$IFDEF FPC}
  4. {$MODE DELPHI}
  5. {$ENDIF}
  6. {$R *.res}
  7. uses
  8. SysUtils,
  9. Quick.Commons,
  10. Quick.Console,
  11. Quick.AppService;
  12. type
  13. {$IFDEF FPC}
  14. TSrvFactory = class
  15. class procedure CreateMyService;
  16. end;
  17. {$ENDIF}
  18. TMyService = class
  19. public
  20. procedure Execute;
  21. end;
  22. procedure TMyService.Execute;
  23. begin
  24. // your code
  25. end;
  26. var
  27. MyService : TMyService;
  28. {$IFDEF FPC}
  29. class procedure TSrvFactory.CreateMyService;
  30. begin
  31. MyService := TMyService.Create;
  32. end;
  33. {$ENDIF}
  34. begin
  35. try
  36. if not AppService.IsRunningAsService then
  37. begin
  38. cout('Running in console mode',etInfo);
  39. MyService := TMyService.Create;
  40. MyService.Execute;
  41. cout('Press [Enter] to exit',etInfo);
  42. ConsoleWaitForEnterKey;
  43. cout('Closing app...',etInfo);
  44. MyService.Free;
  45. end
  46. else
  47. begin
  48. AppService.ServiceName := 'MyService';
  49. AppService.DisplayName := 'MyServicesvc';
  50. AppService.DesktopInteraction := False;
  51. AppService.CanInstallWithOtherName := True;
  52. {$IFDEF FPC}
  53. AppService.OnStart := TSrvFactory.CreateMyService;
  54. {$ELSE}
  55. //you can pass an anonymous method to events
  56. AppService.OnStart := procedure
  57. begin
  58. MyService := TMyService.Create;
  59. end;
  60. {$ENDIF}
  61. AppService.OnExecute := MyService.Execute;
  62. AppService.OnStop := MyService.Free;
  63. AppService.CheckParams;
  64. end;
  65. except
  66. on E: Exception do
  67. Writeln(E.ClassName, ': ', E.Message);
  68. end;
  69. end.