Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Prüfen, ob PowerPoint >= XP installiert ist (https://www.delphipraxis.net/85894-pruefen-ob-powerpoint-%3D-xp-installiert-ist.html)

stz 6. Feb 2007 15:52


Prüfen, ob PowerPoint >= XP installiert ist
 
Moin zusammen,
wie der Titel ja eigentlich schon sagt, will ich von Delphi aus definitiv feststellen, welche PowerPoint Version unter Windows installiert ist, um entweder meine Präsentation abzuspielen, wenn PowerPoint XP oder besser installiert ist, oder die Installation des PowerPoint Viewers anzubieten.

Mein Problem ist aber, dass ich nichts finde, wie ich das prüfen kann. Hat da jemand eine Idee??

schon mal vielen Dank für die hoffentlich vielen guten Ideen ;-)

Gruß
Malte

ErazerZ 6. Feb 2007 16:16

Re: Prüfen, ob PowerPoint >= XP installiert ist
 
Ich würde es so machen
Delphi-Quellcode:
{
  uses ComObj
}
function IsPowerPointInstalled: Boolean;
begin
  Result := not VarIsEmpty(CreateOleObject('PowerPoint.Application'));
end;
Edit: ups zu spät gelesen das du die Version brauchst.

kill -9 6. Feb 2007 16:20

Re: Prüfen, ob PowerPoint >= XP installiert ist
 
Ahoi :)

Ich vermute mal du hast Powerpoint installiert?
Wenn ja:
Die meissten "großen" kommerziellen Programme schreiben Versionsinfos, Installationspfad und Installationsdaten in die Registry,
guck dich mal in "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\..." nach nem Key wie "Powerpoint" oder "MSOffice" um oder benutze die Suchfunktion des Registry-Editors deines Vertrauens ;)

Wenn sich da nichts brauchbares draus machen lässt kannst du über die Dateigröße der PPoint.exe (Heisst doch immernoch so, oder? :gruebel: ) gehen, die wird sich sicherlich von der anderer Versionen unterscheiden..

DMW 6. Feb 2007 16:27

Re: Prüfen, ob PowerPoint >= XP installiert ist
 
Schau in der Registry nach. Da ich nur Office 2000 besitze, kann ich es dir nur für selbiges definitiv sagen, aber dort findet man einen entsprechenden Eintrag unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\x.0\P owerPoint, der auch für die übrigen PowerPoint-Versionen verfügbar sein dürfte. Die Versionsnummern sind wie folgt:
Office 2000: v9.0
Office XP/2002: v10.0
Office 2003: v11.0
Office 2007: v12.0

Ob PowerPoint dann auch wirklich installiert ist, dürftest du mit der Methode meines Vorredners herausfinden können.

shmia 6. Feb 2007 16:41

Re: Prüfen, ob PowerPoint >= XP installiert ist
 
Delphi-Quellcode:
function IsPowerPoint11Installed: Boolean;
begin
  Result := ProgIDExists('PowerPoint.Application.11');
end;
Für die Funktion ProgIDExists siehe: http://www.delphipraxis.net/internal...ct.php?t=82649

stz 6. Feb 2007 21:17

Re: Prüfen, ob PowerPoint >= XP installiert ist
 
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

stz 6. Feb 2007 22:03

Re: Prüfen, ob PowerPoint >= XP installiert ist
 
Moin,
toll - zu früh gefreut :wall:
Mit ein bisschen denken hätte ich auch vorher auf den Gedanken kommen können, dass man kein OleObject eines PowerPoint Viewers erzeugen kann. D. h. ich kann nun zwar prüfen, ob ein echtes PowerPoint installiert ist, aber nachdem ich meinen Viewer installiert habe, will mein Programm jedesmal wieder den Viewer installieren, weil es den nicht erkennt....

An der Stelle versagt dann leider auch shmias Vorschlag und als Registry-Eintrag kommen nur die Schlüssel "Common" und "User Settings" unter "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0 \" (PowerPoint Viewer 2007) hinzu, die nicht auf PowerPoint hindeuten.

Gruß
Malte


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz