AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IsAdobeReaderInstalled

Ein Thema von PeterPanino · begonnen am 6. Aug 2007 · letzter Beitrag vom 7. Aug 2007
Antwort Antwort
Seite 2 von 2     12   
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: IsAdobeReaderInstalled

  Alt 6. Aug 2007, 21:32
Zitat von computer-glossar.de:
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;
Welchen Vorteil hätte das in Hinsicht auf die ursprüngliche Version?
  Mit Zitat antworten Zitat
andreash

Registriert seit: 22. Jun 2006
Ort: Dörverden
60 Beiträge
 
Delphi 7 Professional
 
#12

Re: IsAdobeReaderInstalled

  Alt 6. Aug 2007, 21:34
Da bei nichtvorhandensein der Klasse CreateOLEObject eine Exception ausgibt, würde ich die zweite Variante bevorzugen; schließlich sollten Execption Ausnahmen bleiben.
Andreas
Der Optimist glaubt, wir leben in der besten aller möglichen Welten. Der Pessimist befürchtet, daß das stimmt.
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#13

Re: IsAdobeReaderInstalled

  Alt 6. Aug 2007, 22:19
@ andreash: du hast recht, hab eben noch mal nachgesehen.
hier ein beispiel was ich mal für den zugriff auf word genutzt habe.
dann halt doch mit try except
Delphi-Quellcode:
  try
    word := GetActiveOleObject('Word.Application');
   except
    // Läuft Word noch nicht, wird eine neue Verbindung aufgebaut
    try
      Word := CreateOleObject('Word.Application');
    except
      // Schlägt dies fehl (Word nicht installiert), gibt es eine Fehlermeldung
      MessageDlg( 'Microsoft Word kann nicht starten. Ist Microsoft Word überhaupt installiert?',
                  mtWarning, [mbOK],0);
      Word := unassigned;
    end;
  end;
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.756 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: IsAdobeReaderInstalled

  Alt 7. Aug 2007, 07:39
Zitat von PeterPanino:
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?
Vielleicht magst Du dir diesen Thread einmal anschauen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#15

Re: IsAdobeReaderInstalled

  Alt 7. Aug 2007, 11:29
Zitat von PeterPanino:
Delphi-Quellcode:
function ProgIDExists(const ProgID: WideString): Boolean;
var
  Tmp: TGUID;
begin
  Result := Succeeded(CLSIDFromProgID(PWideChar(ProgID), Tmp));
end;

function IsAdobePdfReaderInstalled: Boolean;
begin
  Result := ProgIDExists('AcroPDF.PDF');
end;
Rein prinzipiell: Welches der beiden Beispiele wäre empfehlenswerter?
Die 2. Variante ist besser!!
Begründung:
Es wird nicht versucht, den PDF-Reader tatsächlich zu erzeugen, nur um ihn 5 Millisekunden später wieder zu schliessen. Es sollte klar sein, dass die 2. Variante wesentlich weniger Resourcen (RAM, Proz.Zyklen) benötigt, da nur überprüft wird, ob die Prog-ID vorhanden ist.
Andreas
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#16

Re: IsAdobeReaderInstalled

  Alt 7. Aug 2007, 12:01
Zitat von PeterPanino:
Hallo,
Wie kann man verlässlich feststellen, ob Adobe Reader installiert ist?
jup, du kannst den windowsinstaller fragen ob das produkt installiert ist.

a) mit der productguid
b) per iteration durch alle pakete und per suchen im "installed product name"
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
axellang

Registriert seit: 3. Mai 2003
Ort: München
138 Beiträge
 
Delphi XE2 Enterprise
 
#17

Re: IsAdobeReaderInstalled

  Alt 7. Aug 2007, 15:22
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
Alexander Lang
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:20 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