Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mit Fremdanwendung Daten an mein Programm senden (https://www.delphipraxis.net/199931-mit-fremdanwendung-daten-mein-programm-senden.html)

Delbor 3. Mär 2019 10:31


Mit Fremdanwendung Daten an mein Programm senden
 
Hi zusammen

Kürzlich habe ich mir einen Dokumentenscanner zugelegt, mit dem ich quasi in 'einem Wisch' mehrere Dokumente, auch PDFs, scannen kann. Nebst verschiedenen Cloudanwenduungen kann ich damit Dokumente auch an Anwendungen senden. Auszuwählen ist dabei lediglich die EXE der Zielanwendung. Somit könnte ich die gescannten PDFs auch an meine eigene Anwendung (zur Weiterverarbeitung) senden.
Welche Voraussetzungen müsste mein Programm erfüllen, um als Zielanwendung überhaupt in Frage zu kommen?

Mein erster Gedanke war, mein Programm um Client-Fähigkeiten zu erweitern und die entsprechende Anwendung als Server anzugeben.
Wenn ich allerdings an Client-Server-Demos unter Delphi denke - da muss immer erst der Server gestartet werden. Dann nimmt der Client Verbindung mit dem Server auf und übergibt ihm einen String, der dieser dann ausgibt. So gesehen wäre mein Programm nicht der Client, sondern der Server. Welche dieser Überlegungen ist jetzt richtig?


Gruss
Delbor

dummzeuch 3. Mär 2019 10:35

AW: Mit Fremdanwendung Daten an mein Programm senden
 
Zitat:

Zitat von Delbor (Beitrag 1426842)
Kürzlich habe ich mir einen Dokumentenscanner zugelegt, mit dem ich quasi in 'einem Wisch' mehrere Dokumente, auch PDFs, scannen kann. Nebst verschiedenen Cloudanwenduungen kann ich damit Dokumente auch an Anwendungen senden. Auszuwählen ist dabei lediglich die EXE der Zielanwendung. Somit könnte ich die gescannten PDFs auch an meine eigene Anwendung (zur Weiterverarbeitung) senden.
Welche Voraussetzungen müsste mein Programm erfüllen, um als Zielanwendung überhaupt in Frage zu kommen?

Ohne den Scanner im Detail zu kennen, würde ich aus der Formulierung "Auszuwählen ist dabei lediglich die EXE der Zielanwendung." darauf schließen, dass das Executable einfach mit dem gescannten Dokument als Parameter aufgerufen wird. Demnach müsste Dein Programm lediglich mittels ParamCount / ParamStr() die übergebenen Parameter auswerten.

Delbor 3. Mär 2019 11:23

AW: Mit Fremdanwendung Daten an mein Programm senden
 
Hi dummzeuch

Danke für deine promte Antwort!

Zitat:

Demnach müsste Dein Programm lediglich mittels ParamCount / ParamStr() die übergebenen Parameter auswerten.
Hmm, wollte schon fragen ob du mir dazu ein Beispiel hast, da ich Paramstr(0) bisher nur als Alternatve zu Application.Exename kenne, aber ich hab doch da noch was gefunden.
Mal sehen, wie weit mich die bereitgestellten Downloads bringen.

Übrigens - der Scanner ist ein Canon Imageformla P-215

Gruss
Delbor

zeras 3. Mär 2019 14:23

AW: Mit Fremdanwendung Daten an mein Programm senden
 
Wenn der Scanner das Abbild vom Scannen als Datei irgendwo ablegt, kannst du, wie vorhin schon geschrieben, mittels ParamStr ermitteln, ob es einen Aufrufparmameter für dein Programm gibt.
Du startet dein Programm mittels "deinprogramm.exe parameter1", wobei parameter1 beispielsweise dann auf einen Pfad wie "c:\temp\dokument.pdf" zeigt.
Dann kannst du mit Paramcount feststellen, ob beim Start deines Programms ein oder mehrere Parameter übergeben wurden. Wenn dem so ist, kannst du mittels Paramstr die Parameter auslesen.

Delbor 3. Mär 2019 14:40

AW: Mit Fremdanwendung Daten an mein Programm senden
 
Hi zusammen

Ich hab da noch eine Frage zu dem unter der oben verlinkten Seite verfügbaren Code:

Zitat:

Selber nutze ich die Record-Variante ein, welche man so verwenden klnnte
Delphi-Quellcode:
with TParameter.GetDefault do begin
  if Exists['file'] then ShowMessage(Value['file']);
  ...
end;


Delphi-Quellcode:
var Params: TParameter;

if Params.Exists['file'] then ShowMessage(Params.Value['file']);
...

Das in den eckigen Klammern angegebene
Delphi-Quellcode:
['file']
verstehe ich lediglich als Platzhalter. Oder hab ich da was falsch verstanden?

Zitat:

Zitat von zeras (Beitrag 1426855)
Wenn der Scanner das Abbild vom Scannen als Datei irgendwo ablegt, kannst du, wie vorhin schon geschrieben, mittels ParamStr ermitteln, ob es einen Aufrufparmameter für dein Programm gibt.
Du startet dein Programm mittels "deinprogramm.exe parameter1", wobei parameter1 beispielsweise dann auf einen Pfad wie "c:\temp\dokument.pdf" zeigt.
Dann kannst du mit Paramcount feststellen, ob beim Start deines Programms ein oder mehrere Parameter übergeben wurden. Wenn dem so ist, kannst du mittels Paramstr die Parameter auslesen.

Danke für deine Antwort, zeras. Das lese ich jetzt so, dass das ['file'] der Pfad zu der ersten Datei in ParamStr ist/sein sollte.


Gruss
Delbor

zeras 3. Mär 2019 15:44

AW: Mit Fremdanwendung Daten an mein Programm senden
 
Zitat:

Zitat von Delbor (Beitrag 1426857)

Danke für deine Antwort, zeras. Das lese ich jetzt so, dass das ['file'] der Pfad zu der ersten Datei in ParamStr ist/sein sollte.

Du kannst einem Programm Parameter übergeben, damit das Programm dementsprechend reagieren soll.
Beim Acrobat kannst du meines Wissens einfach die Datei mit übergeben, die angezeigt werden soll. Dann wird mit Starten vom Acrobat gleich die entsprechende PDF angezeigt. Das Programm muss nur mit den Parametern umgehen können. Wenn du das im Programm nicht programmiert hast, wird dein Programm nicht reagieren.
Mit Word oder Excel ist es ähnlich. Gleich als Parameter die Word- oder Exceldatei übergeben. Dann starten die Programme nicht mit einer leeren Oberfläche, sondern mit der übergegebenen Datei.
Ob du nun die oben genannten Helper nutzt oder einfach nur Paramcount und Paramstr, bleibt dir überlassen.
Wichtig in deinem Fall ist, dass das Scannerprogramm das eingescannte Bild irgendwo als Datei ablegt.
Als Parameter muss man nicht zwangsläufig Dateinamen übergeben. Man kann auch Infos an das Programm übergeben, wie maximize, minimize, etc.

skoschke 4. Mär 2019 05:55

AW: Mit Fremdanwendung Daten an mein Programm senden
 
Da scheinbar vom Scanner immer die Exe (also Deine Anwendung) mit dem Parameter des PDF aufgerufen wird, hast Du nach 10 Dokumenten 10 Instanzen Deiner Anwendung, wenn Du nicht dafür sorgst, dass sie beim Start erkennt, dass bereits eine Instanz von ihr läuft und dann zu dieser bestehenden wechselt!

Ciao
Stefan

Delphi.Narium 4. Mär 2019 09:11

AW: Mit Fremdanwendung Daten an mein Programm senden
 
Alternative:

Wenn das Programm mit Parametern aufgerufen wird, werden die dort aufgeführten Dateien verarbeitet und das Programm beendet sich dann.

Es können dann zwar, je nach Aufrufgeschwindigkeit, mehrere Instanzen des Programmes gleichzeitig laufen, aber sie bleiben nicht dauerhaft aktiv, bis sie manuell beendet werden.

https://www.swissdelphicenter.ch/de/...de.php?id=2126
https://www.entwickler-ecke.de/topic...n_39150,0.html

Delbor 5. Mär 2019 09:11

AW: Mit Fremdanwendung Daten an mein Programm senden
 
Hi zusammen

Ups! Die Beiträge von Delphi.Narium und skoschke hab ich völlig übersehen - ich hab gestern allerdings mal eine etwas grössere Menge Dokumente eingescannt und dabei die Möglichkeiten des Canon-Scanprogramms mal etwas kennengelernt. Fazit: mit meinem bisherigen scanfähigen All-in-One-Drucker hätte ich nicht ansatzweise so effektiv arbeiten können.
Der/die Treiber ist ISIS/Twain. Von daher bin ich dann mal gespannt, ob ich mit meiner Twain-Klasse (war früher mal eine Komponente) diesen Scanner ansprechen kann.

Weiter habe ich gestern auch nach Themen gesucht, um einer Anwendung Parameter[1]zu übergeben und diesen an eine bereits existierende Instanz weiterzureichen. Luckie hat dies mehrfach verlinkt - nur ist dieser Link inzwischen den Weg allen Irdischen gegangen. Da ist der Link zur Entwicklerecke von Delphi.Narium genau das richtige.

Gruss
Delbor


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