-
Ah sorry war n bisschen verpeilt ^^
Der vorherige Code is n bissel älter ^^
Also so sieht es atm aus:
Code:
procedure TForm1.CheckBox1Click(Sender: TObject);
var
Registry: TRegistry;
begin
if Checkbox1.Checked then
begin
Registry:=TRegistry.Create;
Registry.RootKey := HKEY_LOCAL_MACHINE;
Registry.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
Registry.WriteString(ExtractFileName(Application.ExeName), Application.ExeName);
Registry.CloseKey;
Registry.Destroy;
end;
end;
-
Das ist zwar jetzt nicht getestet aber so in der art müsste das dann aussehen:
Code:
procedure TForm1.CheckBox1Click(Sender: TObject);
var
Registry: TRegistry;
begin
Registry:=TRegistry.Create;
Registry.RootKey := HKEY_LOCAL_MACHINE;
Registry.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
if Checkbox1.Checked=true then begin
Registry.WriteString(ExtractFileName(Application.ExeName), Application.ExeName);
end else begin
Registry.DeleteValue(ExtractFileName(Application.ExeName));
end;
Registry.CloseKey;
Registry.Destroy;
end;
jetzt wäre es noch cool wenn es hier ein mod geben würde das den code mit highlighting anzeigt xD
-
Hab das auch schon in der Art gemacht wenn die Syntax stimmt (hab jetz keine Fehler entdeckt) müsste das funktionieren.
-
Code:
procedure DoAppToRunOnce(RunName, AppName: string);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', True);
WriteString(RunName, AppName);
CloseKey;
Free;
end;
end;
function IsAppInRunOnce(RunName: string): Boolean;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', False);
Result := ValueExists(RunName);
CloseKey;
Free;
end;
end;
procedure DelAppFromRunOnce(RunName: string);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', True);
if ValueExists(RunName) then DeleteValue(RunName);
CloseKey;
Free;
end;
end;
procedure DoAppToRun(RunName, AppName: string);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
WriteString(RunName, AppName);
CloseKey;
Free;
end;
end;
function IsAppInRun(RunName: string): Boolean;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False);
Result := ValueExists(RunName);
CloseKey;
Free;
end;
end;
procedure DelAppFromRun(RunName: string);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
if ValueExists(RunName) then DeleteValue(RunName);
CloseKey;
Free;
end;
end;
Aufrufen könnte ihr das z.B. mit einer Checkbox:
Code:
if Checkbox1.Checked then
DoAppToRun('Mein Programm', Application.Exename)
else
if IsAppInRun('Mein Programm') then
DelAppFromRun('Mein Programm');
Erst schaut er ob ihr einen Hacken an die Checkbox gemacht habt, ist dsa der Fall schreibe euer PRogramm in den Autostart, habt ihr den Hacken weggemacht, schaue ob euer Programm im Autostart liegt, wenn ja wirds rausgelöscht, wenn nein passiert nichts
-
OK das ist zwar professioneller, erfüllt aber den gleichen Zweck wie die Prozedur von gORDon_vdLg oder täusch ich mich da?!
-
Ja, der zweck ist der gleiche... du hast die qual der wahl xD