SettingService.pas 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. unit SettingService;
  2. interface
  3. uses
  4. BaseService, Forms, Registry, superobject, Windows, SysUtils;
  5. type
  6. TSettingGroup = (sgSystem, sgHotkey);
  7. TSettingService = class(TBaseService)
  8. private
  9. FAutoRun: Boolean;
  10. FSystemSettings,
  11. FHotkeySettings: ISuperObject;
  12. procedure SetAutoRun(const Value: Boolean);
  13. public
  14. class function Current: TSettingService;
  15. function GetSettingGroup(ASettingGroup: TSettingGroup): ISuperObject;
  16. procedure SetSettingGroup(AJoSetting: ISuperObject; ASettingGroup: TSettingGroup);
  17. property AutoRun: Boolean read FAutoRun write SetAutoRun;
  18. end;
  19. implementation
  20. { TSettingService }
  21. var
  22. ASettingService: TSettingService;
  23. class function TSettingService.Current: TSettingService;
  24. var
  25. AReg: TRegistry;
  26. begin
  27. if ASettingService = nil then
  28. begin
  29. ASettingService := TSettingService.Create;
  30. ASettingService.FSystemSettings := SO();
  31. ASettingService.FHotkeySettings := SO();
  32. AReg := TRegistry.Create;
  33. try
  34. AReg.RootKey := HKEY_LOCAL_MACHINE;
  35. if not AReg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False) then
  36. begin
  37. ASettingService.FAutoRun := False;
  38. end
  39. else
  40. begin
  41. ASettingService.FAutoRun := AReg.KeyExists(Application.Title);
  42. ASettingService.FSystemSettings.B['autoRun'] := ASettingService.FAutoRun;
  43. end;
  44. finally
  45. AReg.Free;
  46. end;
  47. end;
  48. Result := ASettingService;
  49. end;
  50. function TSettingService.GetSettingGroup(
  51. ASettingGroup: TSettingGroup): ISuperObject;
  52. begin
  53. case ASettingGroup of
  54. sgSystem:
  55. begin
  56. Result := FSystemSettings;
  57. Exit;
  58. end;
  59. sgHotkey:
  60. begin
  61. Result := FHotkeySettings;
  62. Exit;
  63. end;
  64. end;
  65. end;
  66. procedure TSettingService.SetAutoRun(const Value: Boolean);
  67. var
  68. AReg: TRegistry;
  69. begin
  70. if FAutoRun = Value then
  71. Exit;
  72. FAutoRun := Value;
  73. ASettingService.FSystemSettings.B['autoRun'] := ASettingService.FAutoRun;
  74. AReg := TRegistry.Create;
  75. try
  76. AReg.RootKey := HKEY_LOCAL_MACHINE;
  77. if AReg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False) then
  78. begin
  79. if FAutoRun then
  80. AReg.WriteString(Application.Title, '"' + Application.ExeName + '" -OSBOOT') {设置程序自动启动}
  81. else
  82. AReg.DeleteValue(Application.Title); {取消程序自动启动}
  83. end;
  84. finally
  85. AReg.Free;
  86. end;
  87. end;
  88. procedure TSettingService.SetSettingGroup(AJoSetting: ISuperObject;
  89. ASettingGroup: TSettingGroup);
  90. begin
  91. case ASettingGroup of
  92. sgSystem:
  93. begin
  94. AutoRun := AJoSetting.B['autoRun'];
  95. end;
  96. sgHotkey: ;
  97. end;
  98. end;
  99. initialization
  100. finalization
  101. if ASettingService <> nil then
  102. FreeAndNil(ASettingService);
  103. end.