Hallo,
ist jetzt vielleicht ein bisschen länger, tut aber was es soll.
Vielleciht vom Code her etwas verständlicher, weil die langen Pfade nicht angegeben werden.
Delphi-Quellcode:
procedure SetAutoStart(AppTitle, AppName: string;
Register: Boolean;
RunOnce: Boolean = False);
var
Registry: TRegistry;
RegistryOpen: Boolean;
begin
RegistryOpen := False;
Registry := TRegistry.Create;
try
Registry.RootKey := HKEY_CURRENT_USER;
case RunOnce of
True: begin
RegistryOpen := Registry.OpenKey(REGSTR_PATH_RUNONCE, False);
end;
False: begin
RegistryOpen := Registry.OpenKey(REGSTR_PATH_RUN, False)
end;
end;
if RegistryOpen then
begin
if Register then
begin
try
Registry.WriteString(AppTitle, AppName);
except
MessageBeep(MB_ICONASTERISK);
ShowMessage('Der Autostartschlüssel konnte nicht in der ' +
'Registry angelegt werden !');
end;
end
else
begin
if Registry.ValueExists(AppTitle) then
begin
if not Registry.DeleteValue(AppTitle) then
begin
MessageBeep(MB_ICONASTERISK);
ShowMessage('Der Autostartschlüssel konnte nicht aus der ' +
'Registry entfernt werden !');
end;
end;
end;
Registry.CloseKey;
end;
finally
Registry.Free;
end;
end;
Der Aufruf bei einer CheckBox, oder einem MenüItem das geChecked ist, müsste dann so aussehen.
Delphi-Quellcode:
procedure TForm1.Autostart1Click(Sender: TObject);
begin
if Autostart1.Checked then
begin
SetAutoStart('DBSysCon', ParamStr(0), False, False);
AutoStart1.Checked := False;
end
else
begin
SetAutoStart('DBSysCon', ParamStr(0), True, False);
AutoStart1.Checked := True;
end;
end;
Grüsse, Daniel
Nachtrag: AutoStart1 ist ein MenüPunkt mit Check-Möglichkeit. Also so ein Häckchen davor. Für ein ganz normales Menü. Oder auch PopUp-Menü.