03. januar 2003 - 14:18
Der er
4 kommentarer og
1 løsning
eksternt program ....
Hejsa :)
Jeg skal lave en funktion i et program hvor den skal søge efter et program på en lokation (eg. c:\mit program\program.exe) og hvis programmet ikke eksistere skal det starte et setup program på en anden fast lokation (eg. f:\setup\setup.exe)... Jeg har haft søgt en del på at lukke regedit op og finde programmet der.. Men, jeg syntes det gjorde systemet sløvt, derfor tænkte jeg at jeg ville søge efter programmet på dens placering i stedet... nogle der kan hjælpe??
03. januar 2003 - 16:37
#1
hvis du ved den skriver sit path i registry er det klart det hurtigeste.
ellers skal du kigge på findfirst/next.
Men hvis du kender reg key med værdier, kan du da lige poste det.
03. januar 2003 - 17:28
#3
//uses registry
function GetPath: string;
var reg: tregistry;
begin
reg := tregistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
if not reg.KeyExists('\SOFTWARE\BS\') then
result := 'Key var der ikke'
else begin
reg.OpenKey('\SOFTWARE\BS\', false);
result := reg.ReadString('Install_Dir');
end;
reg.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(GetPath);
end;
03. januar 2003 - 17:48
#4
dkn << Tak for hjælpen... Jeg lavede dog en lidt anden udgave og den virker :)
Uses Registry, shellAPI;
procedure TForm1.Button1Click(Sender: TObject);
var
regs: TRegistry;
begin
regs := TRegistry.Create();
try
regs.RootKey := HKEY_LOCAL_MACHINE;
regs.OpenKey('\SOFTWARE\Bs',false);
if Regs.ValueExists('Install_Dir') then ShellExecute(Handle, 'open', pchar(regs.ReadString('Install_Dir')+'\'+'Bs.EXE'), '', '', SW_maximize);
if not Regs.ValueExists('Install_Dir') then ShellExecute(Handle, 'open', pchar('F:\\Tool\\Bs\\BsSetup.exe'), '', '', SW_Normal);
Regs.CloseKey;
Finally
Regs.Free;
end;
end;
Jeg har ikke prøvet den løsning du skrev, men der var et par ting i den som jeg kunne bruge, så de 30 point er dine :)