Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi IsAdobeReaderInstalled (https://www.delphipraxis.net/97200-isadobereaderinstalled.html)

PeterPanino 6. Aug 2007 17:57


IsAdobeReaderInstalled
 
Hallo,
Wie kann man verlässlich feststellen, ob Adobe Reader installiert ist?

Balu der Bär 6. Aug 2007 17:58

Re: IsAdobeReaderInstalled
 
Guck in der Registry ob da entspr. Einträge vorhanden sind.

shmia 6. Aug 2007 18:04

Re: IsAdobeReaderInstalled
 
Siehe: http://www.delphipraxis.net/internal...ct.php?t=82649
Den String 'Word.Application' muss man durch 'AcroPDF.PDF' ersetzen.

SirThornberry 6. Aug 2007 18:57

Re: IsAdobeReaderInstalled
 
Willst du wirklich wissen ob der Adobe-Reader installiert ist oder willst du nur wissen ob ein Programm zum öffnen von PDF-Dateien installiert/registriert ist?

PeterPanino 6. Aug 2007 20:54

Re: IsAdobeReaderInstalled
 
Vielen Dank an alle für die Tipps!

An SirThornberry: Ich wollte wissen, ob AdobeReader installiert ist, da ich auf das ActiveX zugreifen möchte.

An shmia: Ich habe mittlerweile auch noch einen anderen Code gefunden, den ich so für Adobe Reader adaptiert habe:

Delphi-Quellcode:
function IsAdobeReaderInstalled: Boolean;
var
  AdobeReader: OLEVariant;
begin
  try
    AdobeReader := CreateOLEObject('AcroPDF.PDF');
    try
      Result := true;
    finally
      AdobeReader := UnAssigned;
    end;
  except
    Result := false;
  end;
end;
Hier ist das adaptierte Beispiel, auf das du hingewiesen hast:

Delphi-Quellcode:
function ProgIDExists(const ProgID: WideString): Boolean;
var
  Tmp: TGUID;
begin
  Result := Succeeded(CLSIDFromProgID(PWideChar(ProgID), Tmp));
end;

function IsWordInstalled: Boolean;
begin
  Result := ProgIDExists('AcroPDF.PDF');
end;
Ich habe das erstere Beispiel auf zwei verschiedenen Computern ausprobiert (auf einem ist der Reader installiert, auf dem anderen nicht). Es funktioniert problemlos.

Rein prinzipiell: Welches der beiden Beispiele wäre empfehlenswerter?

Klaus01 6. Aug 2007 21:00

Re: IsAdobeReaderInstalled
 
Zitat:

Zitat von PeterPanino

An SirThornberry: Ich wollte wissen, ob AdobeReader installiert ist, da ich auf das ActiveX zugreifen möchte.

So weit ich das weiß, sind die ActiveX Objekte aber Versionsabhängig.
Also wenn Dein Programm das ActiveX Object für AdobeReader Version 6 einbindet
wird es vermutlich nicht mit AdobeReader Version 7 arbeiten.

Unabhängiger bist Du, wenn Du das pdf im TWebbrowser anzeigen läßt.
Auch hier muß ein AdobeReader installiert sein, es ist aber gleich welche Version.

Grüße
Klaus

semo 6. Aug 2007 21:03

Re: IsAdobeReaderInstalled
 
am sichersten ist immer eine kombination.
aus irgendeinem grund ist der rechner des clients mal ein wenig anders konfiguriert.
deshalb sind mehrere ausweichfälle nur von vorteil für den programmierer, damit du später dir nicht vor den kofp schlägst und sagen musst: "hätte ich doch gleich mal....".

Kinimod8 6. Aug 2007 21:09

Re: IsAdobeReaderInstalled
 
Zitat:

Zitat von PeterPanino
Rein prinzipiell: Welches der beiden Beispiele wäre empfehlenswerter?

Siehe auch http://luckie-online.de/Developer/Ar...Exceptions.php

semo 6. Aug 2007 21:22

Re: IsAdobeReaderInstalled
 
bezugnehmend auf Kinimod8: man kann mit varIsEmpty() arbeiten.
der erste fall würde dann also so aussehen:
Delphi-Quellcode:
function IsAdobeReaderInstalled(): Boolean;
var
  AdobeReader: OLEVariant;
begin
  AdobeReader := CreateOLEObject('AcroPDF.PDF');
  Result     := not VarIsEmpty(AdobeReader);
  if Result then
    AdobeReader := UnAssigned;
end;

PeterPanino 6. Aug 2007 21:30

Re: IsAdobeReaderInstalled
 
Zitat:

Zitat von Klaus01
So weit ich das weiß, sind die ActiveX Objekte aber Versionsabhängig.
Also wenn Dein Programm das ActiveX Object für AdobeReader Version 6 einbindet
wird es vermutlich nicht mit AdobeReader Version 7 arbeiten.

Unabhängiger bist Du, wenn Du das pdf im TWebbrowser anzeigen läßt.
Auch hier muß ein AdobeReader installiert sein, es ist aber gleich welche Version.

Wieso, die CLSID 'AcroPDF.PDF' müsste doch für alle Reader-Versionen gültig sein, oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:42 Uhr.
Seite 1 von 2  1 2      

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