![]() |
|
#1
|
|||
|
|||
![]() с помощью CheckBox я могу управлять авто загрузкой своей программы
Но при закрытии программы положение CheckBox становится в изначальный режим False Та ка мне записать значение CheckBox в in файл чтоб при загрузке значение оставалось таким как я его задал в последний раз Код:
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Registry; type TForm2 = class(TForm) Label1: TLabel; CheckBox1: TCheckBox; procedure CheckBox1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.CheckBox1Click(Sender: TObject); Var Reg: TRegistry; begin if CheckBox1.Checked=False then begin Reg:=TRegistry.Create; Begin Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run',True); Reg.DeleteValue('PC Off'); Reg.Free; End; end else if CheckBox1.Checked=True then Begin Reg:=TRegistry.Create; Begin Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run',True); Reg.WriteString('PC Off',Application.ExeName); Reg.Free; End; end; end; end. |
#2
|
||||
|
||||
![]() А зачем? Проверяй наличие ключа в реестре, и его значение (при желании)...
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
|||
|
|||
![]() а как проверить ?
|
#4
|
||||
|
||||
![]() Registry.KeyExists вроде. Глянь в справке.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
|||
|
|||
![]() Цитата:
Код:
unit RegAutoRun; interface uses Windows, Classes, SysUtils, Registry, Forms; type TRegRootKey = (rkUser, rkMachine); function ReadRegAutoRun(ARegRootKey : TRegRootKey; AKeyName : String = ''; AParams : String = '') : Boolean; procedure WriteRegAutoRun(ARegRootKey : TRegRootKey; AKeyName : String = ''; AParams : String = ''); procedure DeleteRegAutoRun(ARegRootKey : TRegRootKey; AKeyName : String = ''); implementation const cAutoRunKey = 'Software\Microsoft\Windows\CurrentVersion\Run'; function ReadRegAutoRun(ARegRootKey : TRegRootKey; AKeyName : String = ''; AParams : String = '') : Boolean; var R : TRegistry; AKeyValue : String; ANewKeyValue : String; begin Result := False; R := TRegistry.Create; Try If ARegRootKey = rkUser Then R.RootKey := HKEY_CURRENT_USER Else R.RootKey := HKEY_LOCAL_MACHINE; If AKeyName = '' Then AKeyName := ExtractFileName(Application.ExeName); If R.OpenKeyReadOnly(cAutoRunKey) Then Begin If R.ValueExists(AKeyName) Then Begin AKeyValue := R.ReadString(AKeyName); ANewKeyValue := '"' + Application.ExeName + '"'; If AParams <> '' Then ANewKeyValue := ANewKeyValue + ' ' + AParams; Result := AnsiCompareText(AKeyValue,ANewKeyValue) = 0; End; R.CloseKey; End; Finally R.Free; End; end; procedure WriteRegAutoRun(ARegRootKey : TRegRootKey; AKeyName : String = ''; AParams : String = ''); var R : TRegistry; AKeyValue : String; begin R := TRegistry.Create; Try If ARegRootKey = rkUser Then R.RootKey := HKEY_CURRENT_USER Else R.RootKey := HKEY_LOCAL_MACHINE; If AKeyName = '' Then AKeyName := ExtractFileName(Application.ExeName); If R.OpenKey(cAutoRunKey,True) Then Begin AKeyValue := '"' + Application.ExeName + '"'; If AParams <> '' Then AKeyValue := AKeyValue + ' ' + AParams; R.WriteString(AKeyName,AKeyValue); R.CloseKey; End; Finally R.Free; End; end; procedure DeleteRegAutoRun(ARegRootKey : TRegRootKey; AKeyName : String = ''); var R : TRegistry; begin R := TRegistry.Create; Try If ARegRootKey = rkUser Then R.RootKey := HKEY_CURRENT_USER Else R.RootKey := HKEY_LOCAL_MACHINE; If AKeyName = '' Then AKeyName := ExtractFileName(Application.ExeName); If R.OpenKey(cAutoRunKey,True) Then Begin If R.ValueExists(AKeyName) Then R.DeleteValue(AKeyName); R.CloseKey; End; Finally R.Free; End; end; end. |