Autor |
Beitrag |
Experience1986
      
Beiträge: 192
Win XP Pro SP2
Delphi 7
|
Verfasst: Di 24.01.06 12:17
Hi,
ich suche eine sichere Möglichkeit, wie ich überprüfen kann, ob ein Programm zum lesen von PDF Dateien installiert ist (Adobe Reader, Adobe Photoshop etc.).
Leider kann man nicht einfach so in der Registry so etwas abfragen, da Adobe an die entscheidenden Schlüssel Versionsnummer angehängt hat und somit kann man an dieser Stelle so etwas nicht prüfen...
Kennt Ihr da eine annähernd zuverlässige Lösung???
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Di 24.01.06 13:16
Ich denke wenn "HKEY_CLASSES_ROOT\.pdf" existiert ist eine Acrobat-Version installiert. Dort kannst du auch gleich herausfinden welches Programm PDF-Dateien öffnet: z. B. "HKEY_CLASSES_ROOT\.pdf\OpenWithList\AcroRd32.exe"
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Di 24.01.06 14:38
onlinehome hat folgendes geschrieben: | Ich denke wenn "HKEY_CLASSES_ROOT\.pdf" existiert ist eine Acrobat-Version installiert. Dort kannst du auch gleich herausfinden welches Programm PDF-Dateien öffnet: z. B. "HKEY_CLASSES_ROOT\.pdf\OpenWithList\AcroRd32.exe" |
Letzteres könnte dir aber unter Win9x Probleme bereiten.
AXMD
|
|
Experience1986 
      
Beiträge: 192
Win XP Pro SP2
Delphi 7
|
Verfasst: Di 24.01.06 14:38
Zuletzt bearbeitet von Experience1986 am Mi 25.01.06 19:12, insgesamt 1-mal bearbeitet
|
|
Experience1986 
      
Beiträge: 192
Win XP Pro SP2
Delphi 7
|
Verfasst: Di 24.01.06 14:40
Die Lösung die ich gerade gepostet habe sollte aber, soweit mir bekannt, auch unter Win9x laufen. Oder???
Zuletzt bearbeitet von Experience1986 am Di 24.01.06 14:41, insgesamt 1-mal bearbeitet
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Di 24.01.06 14:41
Experience1986 hat folgendes geschrieben: | Die Lösung die gerade gepostet habe sollte aber, soweit mir bekannt, auch unter Win9x laufen. Oder??? |
IIRC hat Win9x keine OpenWithList.
AXMD
|
|
Experience1986 
      
Beiträge: 192
Win XP Pro SP2
Delphi 7
|
Verfasst: Di 24.01.06 14:45
Mein Kode schaut aber doch zuerst in HKEY_CLASSES_ROOT\.pdf nach.
In diesem Fall steht dort "AcroExch.Document".
Also öffne ich dann HKEY_CLASSES_ROOT\AcroExch.Document. In diesem Schlüssel sind alle Befehle für Dateien die mit Acrobat Reader verknüpft sind.
Daher kann ich also HKEY_CLASSES_ROOT\AcroExch.Document\Shell\Open\Command öffnen und sollte somit auf jedem Windows System einen Adobe Reader Pfad (oder dergleichen) haben, zum. wenn PDF Dateien verknüpft sind.
Auf Windows XP funktioniert es mal problemlos
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 24.01.06 14:53
Die Frage ist, ob man zu Zeiten, wo Windows Vista vor der Tür steht, noch Windows 9x unterstützt oder nicht. Laut meinen Webseitenstatistiken war im letzten Monat nioemand mit Windows 9x auf meinr Homepage.
Aber eigentlich wollte ich was anders sagen: Bei mir wird dein Code böse abstürzen. Du erzeugst das Registry Objekt ohne Angabe der Zugriffsart, also wird er mit KEY_ALL_ACCESS geöffnet. Da ich dort als eingeschränkter Benutzer nur Leserechte habe, wird das schief gehen. Desweiteren fehlt der Ressourcenschutzblock mit try-finally.
|
|
Experience1986 
      
Beiträge: 192
Win XP Pro SP2
Delphi 7
|
Verfasst: Mi 25.01.06 19:13
Dein Wunsch ist mir Befehl.
Hab die Änderungen eingesetzt.
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 25.01.06 21:09
wenn du schon weisst, das ein reader vorhanden ist, dann kannst du doch auch die datei gleich öffnen. da brauchst nicht in der registry rumfummeln... und sollt auch unter 9x funktionieren.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure runpdf; var r: tfilerun; myPDF: string; begin myPDF := 'c:\pfad\datei.pdf'; r := tfilerun.create(self); try r.Filename := myPDF; r.execute; finally r.free; end; end; |
grüsse
wolf
|
|