Moin,
erstmal schönen Dank für die vielen Vorschläge.
@ErazerZ: Das macht
IMHO wenig Sinn, da Delphi eine
Exception feuert, wenn das Erzeugen des Objektes schiefgeht. VarIsEmpty wird dann also gar nicht mehr ausgeführt.
Ole war trotzdem ein gutes Stichwort. Ich hab mir nun folgende Funktion zusammengestrickt:
Delphi-Quellcode:
uses ComObj, Variants;
function GetPowerPointVersion: Integer;
{Rueckgabewerte:
-1 = kein PowerPoint installiert
0 = PowerPoint installiert, aber Versionsabfrage gescheitert
>0 = PowerPoint-Version}
var
PowerPoint: OleVariant;
VersionStr: String;
Status: Integer;
begin
try
PowerPoint := GetActiveOleObject('PowerPoint.Application');
Status := 2;
except
try
PowerPoint := CreateOleObject('PowerPoint.Application');
Status := 1;
except
Status := 0;
end;
end;
if Status > 0 then
begin
try
VersionStr := PowerPoint.Version;
Result := StrToInt(Copy(VersionStr, 1, Pos('.', VersionStr) - 1));
except
Result := 0;
end;
if Status = 1 then
PowerPoint.Quit;
PowerPoint := Unassigned;
end
else
Result := -1;
end;
@shmia: Deine Lösung ist zwar eleganter, aber ich muss halt nur wissen, ob PowerPoint XP oder besser installiert ist, und wenn ich auf Version 10, 11, 12 und 13 prüfe, kommt irgendwann Version 14 heraus und ich hab sie nicht mehr drin
Gruß
Malte