![]() |
|
|
#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
|
||||
|
||||
|
А зачем? Проверяй наличие ключа в реестре, и его значение (при желании)...
|
|
#3
|
|||
|
|||
|
а как проверить ?
|
|
#4
|
||||
|
||||
|
Registry.KeyExists вроде. Глянь в справке.
|
|
#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. |