AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Mit Delphi ein anderes Delphiprogramm ansprechen
Thema durchsuchen
Ansicht
Themen-Optionen

Mit Delphi ein anderes Delphiprogramm ansprechen

Ein Thema von Back2Code · begonnen am 16. Jan 2014 · letzter Beitrag vom 16. Jan 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Back2Code
Back2Code

Registriert seit: 6. Feb 2012
Ort: Deutschland
272 Beiträge
 
Delphi XE7 Professional
 
#1

Mit Delphi ein anderes Delphiprogramm ansprechen

  Alt 16. Jan 2014, 14:50
Delphi-Version: 2010
Hallo ich habe bereits ein Programm geschrieben als Konsolenanwendung welches mit Parametern arbeitet. Nun würde ich gerne noch eine Oberfläche dazu programmieren.

Damit ich mir Arbeit & Zeit spare habe ich mir gedacht, dass es doch sicher eine Möglichkeit gibt mein bereits bestehendes Programm einfach mit meinem neuen Programm aufrufen könnte und die Parameter übergeben würde.

Meine Frage ist jetzt wie genau ich so etwas anstelle und ob es auch möglich ist z.b Fehlermeldungen also allgemein Ausgaben aus dem Konsolenprogramm welches dann im Hintergrund laufen soll auszulesen und in der GUI wiederzugeben.
00111100001100110010000001000100011001010110110001 1100000110100001101001
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
679 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Mit Delphi ein anderes Delphiprogramm ansprechen

  Alt 16. Jan 2014, 14:53
ShellExecute kann Programme aufrufen. Da kannst auch Parameter mit übergeben. Die können über ParamStr(x) gelesen werden
Mit Returncodes kannst Du auch fehler an den Aufrufer melden.
Zum bsp mit der Procedure Halt in Delphi, die akzeptiert eine Numemr als Parameter und die kannst in einer batch datei oder in Delphi abfangen.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: Mit Delphi ein anderes Delphiprogramm ansprechen

  Alt 16. Jan 2014, 14:58
Das ist sogar nicht auf Fehlercodes beschränkt. Du kannst den kompletten Inhalt des Konsolenprogramms über Pipes auslesen:
http://stackoverflow.com/questions/2...ui-application
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Back2Code
Back2Code

Registriert seit: 6. Feb 2012
Ort: Deutschland
272 Beiträge
 
Delphi XE7 Professional
 
#4

AW: Mit Delphi ein anderes Delphiprogramm ansprechen

  Alt 16. Jan 2014, 14:59
ShellExecute kann Programme aufrufen. Da kannst auch Parameter mit übergeben. Die können über ParamStr(x) gelesen werden
Mit Returncodes kannst Du auch fehler an den Aufrufer melden.
Zum bsp mit der Procedure Halt in Delphi, die akzeptiert eine Numemr als Parameter und die kannst in einer batch datei oder in Delphi abfangen.
Bei ShellExecute kann ich doch auch das entsprechende Programm irgendwie Hidden also versteckt nicht sichtbar ausführen oder? Wie lautet da der genaue Paramter zu ?
00111100001100110010000001000100011001010110110001 1100000110100001101001
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#5

AW: Mit Delphi ein anderes Delphiprogramm ansprechen

  Alt 16. Jan 2014, 15:02
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
Zitat:
nShowCmd [in]

Type: INT

The flags that specify how an application is to be displayed when it is opened. If lpFile specifies a document file, the flag is simply passed to the associated application. It is up to the application to decide how to handle it. These values are defined in Winuser.h.

SW_HIDE (0)

Hides the window and activates another window.

...
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: Mit Delphi ein anderes Delphiprogramm ansprechen

  Alt 16. Jan 2014, 15:03
Und ansonsten noch alles, was mit IPC zu tun hat.
Messages, Pipes, Sockets, MMFs ........

Die bisher genannten Dinge, sind aber Möglichkeiten, die praktisch jedes Programm von Haus aus bietet, über die bekannten Standardwege.
Alles Andere wird praktisch speziell "zusätzlich" in beide Programme eingebaut, damit diese sich direkt unterhalten können.
$2B or not $2B

Geändert von himitsu (16. Jan 2014 um 15:11 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Mit Delphi ein anderes Delphiprogramm ansprechen

  Alt 16. Jan 2014, 15:03
Hätte ich spontan auch gesagt, wenn auch keinen Code zur Hand: Ich hätte deinen "Kindprozess" mittels CreateProcess gestartet und somit gleich die stdOut-Handles auf eine Pipe, welche deine Elternanwendung aufmacht, umgebogen.

Das hier auf SO scheint exakt in diese Richtung zu gehen:
http://stackoverflow.com/q/2957490/2298252
  Mit Zitat antworten Zitat
Benutzerbild von Back2Code
Back2Code

Registriert seit: 6. Feb 2012
Ort: Deutschland
272 Beiträge
 
Delphi XE7 Professional
 
#8

AW: Mit Delphi ein anderes Delphiprogramm ansprechen

  Alt 16. Jan 2014, 15:35
Hätte ich spontan auch gesagt, wenn auch keinen Code zur Hand: Ich hätte deinen "Kindprozess" mittels CreateProcess gestartet und somit gleich die stdOut-Handles auf eine Pipe, welche deine Elternanwendung aufmacht, umgebogen.

Das hier auf SO scheint exakt in diese Richtung zu gehen:
http://stackoverflow.com/q/2957490/2298252
Gibts hier im Board bzw im Netz eine gute Erklärung zu den Begriffen "Pipe & stdOut? Höre ich jetzt zum ersten Mal
00111100001100110010000001000100011001010110110001 1100000110100001101001
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Mit Delphi ein anderes Delphiprogramm ansprechen

  Alt 16. Jan 2014, 15:45
Wenn du dein Konsolenprogramm in zwei Teile splitten würdest könnst du den Teil der die eigentliche Arbeit verrichtet auch in der Anwendung mit der GUI einbinden.
Das ist einfacher und sicherer als von der GUI-Anwendung auf die Konsolenanwendung zuzugreifen.
Dazu benötigst du eine Klasse in einer eigenen Unit die von beiden Programmen mit uses eingebunden wird.
Dieser Klasse wird über Properties alle Informationen eingespeist und dann eine "DoWork"-Methode aufgerufen.
Falls während dieser Arbeit eine Rückmeldung erforderlich sein sollte, dann lässt sich dies über ein Event bewerkstelligen.
Man braucht dann in der Konsolenanwendung noch eine weitere Klasse die das Event empfängt und die Info per writeln an die Konsole ausgibt, aber das ist halb so schlimm wie es sich anhört.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: Mit Delphi ein anderes Delphiprogramm ansprechen

  Alt 16. Jan 2014, 16:05
Stell dir eine Pipe wie einen TFileStream vor ... allerdings nur im Lesemous, bzw nur im Schreibmodus und ohne Seek und Co. , also nur Read ORDER Write.
(drum kann man die Ein und Ausgaben auch so schön auf Dateien umleiten, wie man es z.B. aus den BAT-Dateien mit dem ">" kennt)

Es gibt bei Konsolenanwendungen 3 dieser Pipes:
StdIn > der Stream für die Eingabe von der Tastatur
StdOut > der Stream für die Ausgabe zum Monitor (also in die Konsole)
ErrOut > der Strream geht auch auf den Monirot und gibt quasi die Fehlermeldungen aus (oder irgendwie sowas)
$2B or not $2B

Geändert von himitsu (16. Jan 2014 um 16:11 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:46 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