MyServiceConsole.dpr 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. {$IFDEF FPC}
  52. AppService.OnStart := TSrvFactory.CreateMyService;
  53. {$ELSE}
  54. //you can pass an anonymous method to events
  55. AppService.OnStart := procedure
  56. begin
  57. MyService := TMyService.Create;
  58. end;
  59. {$ENDIF}
  60. AppService.OnExecute := MyService.Execute;
  61. AppService.OnStop := MyService.Free;
  62. AppService.CheckParams;
  63. end;
  64. except
  65. on E: Exception do
  66. Writeln(E.ClassName, ': ', E.Message);
  67. end;
  68. end.