Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Adobe Reader (wieder einmal) (https://www.delphipraxis.net/181094-adobe-reader-wieder-einmal.html)

hesch21 15. Jul 2014 15:17

Adobe Reader (wieder einmal)
 
Hallo
ich weiss, ein leidiges Thema. Ich habe inzwischen bereits mehrere Applikationen geschrieben, die PDFs erstellen und den Adobe-Reader öffnen (ShellExecute). Aber nun sollte ich mal was ganz anderes machen. Ich sollte von einem geöffneten Adobe-Reader das PDF 'abfangen', den Adobe-Reader schliessen (von mir aus auch abschiessen) und dann das PDF weiter verarbeiten (in einzelne BMP umwandeln, umsortieren, etc.).
Nun hänge ich aber an einem dämlichen Problem: Wie komme ich an den Pfad der PDF-Datei, welche der Adobe-Reader offen hat? Und unter Umständen können das ja mehrere sein. Ich kann mir zwar über EnumProc den Fenstertitel mit dem Dateinamen heraussuchen (so wie er im Taskmanager bei Applikationen angezeigt wird), nur hilft das nicht so viel.
Ein rekursiver Suchlauf über die gesamte Netzwerkumgebung und eigene Festplatte ist nicht das Wahre und mit ActiveX auf Adobe-Reader zugreifen sollte man ja bekanntlich nicht.
Hat da jemand eine Idee?

Bernhard Geyer 15. Jul 2014 15:22

AW: Adobe Reader (wieder einmal)
 
Sinnvollerweise entwickelst du gegen die API des Acrobat: http://www.adobe.com/devnet/acrobat/...hitecture.html
Beim Reader kann das aber sehr teuer werden!

hesch21 16. Jul 2014 08:22

AW: Adobe Reader (wieder einmal)
 
Hallo Bernhard
ja, schon. Ich habe auch mal kurz überlegt, ob das Sinn machen würde, finde aber, das sei mit Kanonen auf Spatzen geschossen. Ich will ja vom Adobe Reader nur eines: Den oder die Namen inkl. Pfad der gerade geöffneten PDFs. Die Namen selbst liefert er mir ja schon 'freiwillig'. Das müsste doch auch auf eine andere Art machbar sein als auf eine langwierige und stinketeure (und vermutlich nicht mal wirklich Delphi-kompatible) Weise über ein Adobe-SDK.

TiGü 16. Jul 2014 08:47

AW: Adobe Reader (wieder einmal)
 
Ich weiß auch nicht genau wie, aber vielleicht hilft dir das ein bisschen weiter:

Mit dem Process Monitor von SysInternals kann man sich ja bekanntlich alle Operationen eines Prozesses anzeigen lassen.

Auch die geöffneten Dateien.

Du müsstest nur raus finden, wie das funktioniert und für deinen Spezialfall anpassen.

hesch21 16. Jul 2014 09:59

AW: Adobe Reader (wieder einmal)
 
Hallo TiGü
vermutlich grüble ich in diese Richtung und habe auch eine Lösung gefunden, die mich aber nicht nur in Sachen Geschwindigkeit nicht befriedigt. Wenn ich über CMD ein openfiles > (irgend ein Textfile) absetze, erhalte ich nach etwa 13 Sekunden eine schöne Liste aller offenen Dateien. Da kann ich dann nach dem Adobe-Reader und den PDF-Dateien suchen. Aber auch unschön ist, dass der openfiles erst funktioniert, wenn man mal einen 'openfiles /local on' mit Administrator-Rechten abgesetzt und den Rechner neu gestartet hat.

UliBru 16. Jul 2014 11:02

AW: Adobe Reader (wieder einmal)
 
Das Auflisten offener Dateien mit eigenem Programm (ohne Shellcommand) scheint nicht gerade unaufwendig zu sein.
Siehe dazu mal hier bei CodeProject http://www.codeproject.com/KB/shell/...select=2277170

hesch21 16. Jul 2014 15:50

AW: Adobe Reader (wieder einmal)
 
Neuer Zwischenstand: Der Tipp Process Monitor von TiGü war wirklich gut, nur ist es nicht Process Monitor von SysInternals, sondern 'Handle'. Wenn ich 'handle -p acrord > c:\temp\test.txt' absetze, liefert mir das Ding ultraschnell eine Datei mit allen offenen Files vom Acrobat Reader, die ich nur noch nach den PDFs durchsuchen muss. Einziger Schönheitsfehler: 'Handle' braucht Administratoren-Rechte.

4dk2 16. Jul 2014 15:52

AW: Adobe Reader (wieder einmal)
 
hmmm und der andere Weg, ein Programm schreiben das beim öffnen einer PDF gestartet wird und dann den Adobe Reader Startet? Sozusagen nen Loader?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:28 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