| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- unit SettingService;
- interface
- uses
- BaseService, Forms, Registry, superobject, Windows, SysUtils;
- type
- TSettingGroup = (sgSystem, sgHotkey);
- TSettingService = class(TBaseService)
- private
- FAutoRun: Boolean;
- FSystemSettings,
- FHotkeySettings: ISuperObject;
- procedure SetAutoRun(const Value: Boolean);
- public
- class function Current: TSettingService;
- function GetSettingGroup(ASettingGroup: TSettingGroup): ISuperObject;
- procedure SetSettingGroup(AJoSetting: ISuperObject; ASettingGroup: TSettingGroup);
- property AutoRun: Boolean read FAutoRun write SetAutoRun;
- end;
- implementation
- { TSettingService }
- var
- ASettingService: TSettingService;
- class function TSettingService.Current: TSettingService;
- var
- AReg: TRegistry;
- begin
- if ASettingService = nil then
- begin
- ASettingService := TSettingService.Create;
- ASettingService.FSystemSettings := SO();
- ASettingService.FHotkeySettings := SO();
- AReg := TRegistry.Create;
- try
- AReg.RootKey := HKEY_LOCAL_MACHINE;
- if not AReg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False) then
- begin
- ASettingService.FAutoRun := False;
- end
- else
- begin
- ASettingService.FAutoRun := AReg.KeyExists(Application.Title);
- ASettingService.FSystemSettings.B['autoRun'] := ASettingService.FAutoRun;
- end;
- finally
- AReg.Free;
- end;
- end;
- Result := ASettingService;
- end;
- function TSettingService.GetSettingGroup(
- ASettingGroup: TSettingGroup): ISuperObject;
- begin
- case ASettingGroup of
- sgSystem:
- begin
- Result := FSystemSettings;
- Exit;
- end;
- sgHotkey:
- begin
- Result := FHotkeySettings;
- Exit;
- end;
- end;
- end;
- procedure TSettingService.SetAutoRun(const Value: Boolean);
- var
- AReg: TRegistry;
- begin
- if FAutoRun = Value then
- Exit;
- FAutoRun := Value;
- ASettingService.FSystemSettings.B['autoRun'] := ASettingService.FAutoRun;
- AReg := TRegistry.Create;
- try
- AReg.RootKey := HKEY_LOCAL_MACHINE;
- if AReg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False) then
- begin
- if FAutoRun then
- AReg.WriteString(Application.Title, '"' + Application.ExeName + '" -OSBOOT') {设置程序自动启动}
- else
- AReg.DeleteValue(Application.Title); {取消程序自动启动}
- end;
- finally
- AReg.Free;
- end;
- end;
- procedure TSettingService.SetSettingGroup(AJoSetting: ISuperObject;
- ASettingGroup: TSettingGroup);
- begin
- case ASettingGroup of
- sgSystem:
- begin
- AutoRun := AJoSetting.B['autoRun'];
- end;
- sgHotkey: ;
- end;
- end;
- initialization
- finalization
- if ASettingService <> nil then
- FreeAndNil(ASettingService);
- end.
|