Zitat von
PeterPanino:
Hallo,
Wie kann man verlässlich feststellen, ob Adobe Reader installiert ist?
Code:
function CleanOpenCmd(Cmd:String):String;
var i,j:integer;
begin
result:='';
for i:=1 to length(Cmd) do
begin
for j:=i to length(Cmd) do
begin
result:=result+Cmd[j];
if FileExists(Result) then
begin
exit;
end;
end;
result:='';
end;
end;
// Ermittelt die Anwendung mit der standardgemäß die Dateien verknüpft sind.
function IsAppOnBoard(FileExt:string):String;
var Reg:TRegistry; tmp:String;
begin
Result:='';
Reg:=TRegistry.Create(KEY_READ);
try
Reg.RootKey:=HKEY_CLASSES_ROOT;
// False, weil der Schlüssel nicht automatisch erstellt werden soll
if Reg.OpenKey(FileExt, False) then
begin
tmp:=Reg.ReadString('');
Reg.CloseKey;
if Reg.OpenKey(tmp+'\Shell\Open\Command', False) then
begin
tmp:=Reg.ReadString('');
Reg.CloseKey;
Result:=CleanOpenCmd(tmp);
end;
end;
finally
Reg.Free;
end;
end;
// Beispiel
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(IsAppOnBoard('.pdf'));
end;
Funktioniert natürlich mit fast allen gängigen Anwendungen (*.doc;*.xls, usw...)
all the best
Alexander