2
0

MyServiceConsole.pas 1.5 KB

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