Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   Fremdes Programm ansteuern (https://www.delphipraxis.net/176833-fremdes-programm-ansteuern.html)

sigga 29. Sep 2013 17:25


Fremdes Programm ansteuern
 
Ich will den Text aus einer PDF haben, um z.B. Telefonnummern zu suchen.
Einfach einlesen wie bei TXT geht nicht, da bei PDF der Text Binärcodiert ist.
Da die PDF verschieden aussehen, sind sie nicht immer an der selben Stelle, also nicht auslesbar.
Einfachster Weg den ich gefunden habe:
Den gesamten Text markiern, dann kopieren und dann in TMemo reinkopieren, dann kann man da nach allem suchen.
Alles markieren wäre strg+a,kopieren strg+c und einfügen ins Memo da werd ich wohl den zwischenspeicher auslesen.

Als Möglichkeit zum ansteuern des Adobe Reader bin ich auf Sendmessage gekommen.
var zahl:integer; hndl : THANDLE
SendMessage(hndl, WM_COMMAND, zahl, 0);
Auf windowsseite find ich aber keine Info wie man ein strg+A und so auslöst oder welche zahl das sein soll, die arbeiten mit wörtern.

jensw_2000 29. Sep 2013 18:02

AW: Fremdes Programm ansteuern
 
So sendet man ein CRTL+A

Delphi-Quellcode:
  keybd_event(VK_CONTROL, 0, 0, 0);
  keybd_event(Ord('A'), 0, 0, 0);
  keybd_event(Ord('A'), 0, KEYEVENTF_KEYUP, 0);
  keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
So ein CRTL + C

Delphi-Quellcode:
  keybd_event(VK_CONTROL, 0, 0, 0);
  keybd_event(Ord('C'), 0, 0, 0);
  keybd_event(Ord('C'), 0, KEYEVENTF_KEYUP, 0);
  keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
So stellt man sicher, dass der User nicht irgendwelche anderen Control Keys drückt ...

http://www.delphipraxis.net/462744-post6.html

sigga 29. Sep 2013 19:55

AW: Fremdes Programm ansteuern
 
Funktioniert super

der Ordnung halber:
Im interface unter uses braucht man
windows, winsock,
sonst funktioniert es nicht, es steht bei den meisten erklärungen nur 'windows' dabei

jensw_2000 29. Sep 2013 20:04

AW: Fremdes Programm ansteuern
 
Zitat:

Zitat von sigga (Beitrag 1230280)
winsock

:gruebel:
Winsock brauchst du für Socket Kommunikation, aber ganz sicher nicht für ein einfaches "CTRL+A".

Die unit "Clipbrd" könnte sicher interessant sein, damit man den Text aus der Zwischenablage auch wieder zum Weiterverarbeiten herausbekommt ...

Luckie 30. Sep 2013 01:29

AW: Fremdes Programm ansteuern
 
Mach das lieber über eine temporäre Datei als über die Zwischenablage. Oder wenn über die Zwischenablage, dann weis den Anwender drauf hin. Ich verwende die Zwischenablage sehr intensiv und wenn sie mir ein Programm ungefragt überschreibt, sollte der Programmierer möglichst nicht mit mir in einem Raum befinden.

sigga 30. Sep 2013 06:34

AW: Fremdes Programm ansteuern
 
Zitat:

Zitat von jensw_2000 (Beitrag 1230282)
Zitat:

Zitat von sigga (Beitrag 1230280)
winsock

:gruebel:
Winsock brauchst du für Socket Kommunikation, aber ganz sicher nicht für ein einfaches "CTRL+A".

Die unit "Clipbrd" könnte sicher interessant sein, damit man den Text aus der Zwischenablage auch wieder zum Weiterverarbeiten herausbekommt ...

ohne winsock wird der befehl "keybd_event" aber nicht erkannt.

Zitat:

Zitat von Luckie (Beitrag 1230298)
Mach das lieber über eine temporäre Datei als über die Zwischenablage. Oder wenn über die Zwischenablage, dann weis den Anwender drauf hin. Ich verwende die Zwischenablage sehr intensiv und wenn sie mir ein Programm ungefragt überschreibt, sollte der Programmierer möglichst nicht mit mir in einem Raum befinden.

Das Öffnen der PDF, kopieren und wieder schließen verträgt eh schon keine einmischung,von daher darf während dem programmlauf schon keiner daran arbeiten, unter den umständen kann ich auch die zwischenablage nutzen. hab mal grob getestet wielange ich bei 10 dateien brauch, der pc wird die ganze nacht durchrennen

Sir Rufo 30. Sep 2013 11:20

AW: Fremdes Programm ansteuern
 
Hilft dir das eventül?

http://www.swissdelphicenter.ch/de/showcode.php?id=2169

sigga 30. Sep 2013 15:39

AW: Fremdes Programm ansteuern
 
Zitat:

Zitat von Sir Rufo (Beitrag 1230342)

nö leider nicht, bei Lazarus gibt es kein "acrobat_tlb"
leider
hatte ich auch schon gefunden

mkinzler 30. Sep 2013 16:11

AW: Fremdes Programm ansteuern
 
Diese muss man auch selber erzeugen (Wrapper Unit um ActiveX-Control)

sigga 30. Sep 2013 18:42

AW: Fremdes Programm ansteuern
 
wäre ne bessere Lösung mit activex, hab dazu nur eine erklärung für word dateien gefunden
soweit ich es verstanden hab schließt man die application ins Ole object.
wie heißt denn die acrobat application, also was muss in createOleobject()?
ist niergnds beschrieben wo die das her haben


> MSWord: Variant;
> begin
> MSWord := CreateOleObject('Word.Application');

hier mal die Quelle:
http://free-pascal-general.1045716.n...td4418635.html

sirius 7. Okt 2013 13:11

AW: Fremdes Programm ansteuern
 
Es gibt Programme, die Dir aus einer pdf eine Textdatei machen (z.B. pdftotext).

generic 7. Okt 2013 13:45

AW: Fremdes Programm ansteuern
 
Du kannst dir alternativ einen Browser einbinden und mit pdf.js die Pdf in den Browser laden. Dann ließt du einfach den DOM aus.


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