AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exe aufrufen und Rückgabewert auswerten

Ein Thema von DieDolly · begonnen am 21. Apr 2022 · letzter Beitrag vom 25. Apr 2022
Antwort Antwort
Seite 1 von 2  1 2      
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

AW: Exe aufrufen und Rückgabewert auswerten

  Alt 21. Apr 2022, 19:57
Im Prinzip schon. Aber ich dachte das kann man direkt über ShellExecuteExW() regeln könnte.
Exe-A ruft ShellExecuteExW auf und wartet ja auf einen Boolean-Rückgabewert. Ich dachte da kann man aus Exe-B irgendwas raus senden.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Exe aufrufen und Rückgabewert auswerten

  Alt 21. Apr 2022, 19:59
Sind das beides Deine Programme? Konsole oder UI?
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
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#3

AW: Exe aufrufen und Rückgabewert auswerten

  Alt 21. Apr 2022, 20:02
Beides meine Programme. Exe-A mit GUI, Exe-B ist kein Konsolenprogramm ({$APPTYPE CONSOLE} nicht gesetzt), hat aber keine Formulare. Alles findet in der DPR statt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Exe aufrufen und Rückgabewert auswerten

  Alt 21. Apr 2022, 20:07
Dann könntest Du doch in beiden Programmen mit RegisterWindowsMessage eine eigene Message erzeugen, die Programm B an Programm A sendet, sobald das Ergebnis feststeht. Entweder gibt dann Programm A ein Fensterhandle (Application.Mainform.Handle z.B.) als Kommandoparameter an Programm B mit, oder dieses sendet einfach an HWND_BROADCAST.
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
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#5

AW: Exe aufrufen und Rückgabewert auswerten

  Alt 21. Apr 2022, 20:09
Könntest du mir davon ein Beispiel schicken? Davon verstehe ich gerade überhaupt nichts.

Was wm-copydata angeht, könnte das eventuell so bei mir funktionieren:
- ExeA ruft ExeB auf
- ExeA wartet auf Beendigung von ExeB
- während ExeB noch läuft, schicke ich per wm-copydata was an ExeA. Dort wird eine Variable mit irgendwas gefüllt.
- sobald ExeB beendet ist, gehts in ExeA weiter und dort könnte ich die variable auswerten.

Könnte klappen

Geändert von DieDolly (21. Apr 2022 um 20:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Exe aufrufen und Rückgabewert auswerten

  Alt 21. Apr 2022, 20:15
Im Moment nicht, da ich am Tablet schreibe. Aber RegisterWindowMessage nimmt als Parameter einen PChar auf einen möglichst eindeutigen String entgegen und gibt eine systemweit eindeutige Message-ID zurück. Das eignet sich meiner Meinung nach prima für Dein Anliegen.
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
venice2
(Gast)

n/a Beiträge
 
#7

AW: Exe aufrufen und Rückgabewert auswerten

  Alt 21. Apr 2022, 20:31
Im Moment nicht, da ich am Tablet schreibe. Aber RegisterWindowMessage nimmt als Parameter einen PChar auf einen möglichst eindeutigen String entgegen und gibt eine systemweit eindeutige Message-ID zurück. Das eignet sich meiner Meinung nach prima für Dein Anliegen.
eine Message muss man nicht extra registrieren wenn man über beide Quellen verfügt.
Lege dir einfach eine Message an die du in beiden Anwendungen definierst.

Geändert von venice2 (21. Apr 2022 um 20:54 Uhr)
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#8

AW: Exe aufrufen und Rückgabewert auswerten

  Alt 21. Apr 2022, 20:33
Habe das jetzt so gelöst, da ich eh schon einen Handler für WmCopyData im Programm habe.

ExeB
Delphi-Quellcode:
var
 hExistingInstance: THandle;
 pName: PChar;
 aCopyData: TCopyDataStruct;

procedure SendRecord(const aRecordToSend: TCopyDataStruct);
begin
 aCopyData.dwData := ... irgendein int wert, max cardinal;
 SendMessage(hExistingInstance, WM_COPYDATA, 0, LPARAM(@aCopyData));
end;

procedure SendReturnCode(const ReturnString: string);
begin
 pName := PChar(ReturnString);
 aCopyData.cbData := (StrLen(pName) + 1) * SizeOf(PWideChar);
 aCopyData.lpData := pName;

 SendRecord(aCopyData);
end;

 hExistingInstance := FindWindow(PChar('TFormBlubb'), nil);

 if (hExistingInstance = 0) then
  SendReturnCode('NixOK')
 else
  SendReturnCode('AllesOK');
ExeA
Delphi-Quellcode:
private
  {Private-Deklarationen}
  procedure WMCopyData(var msg: TWMCopyData); message WM_COPYDATA;

procedure TFormBlubb.WMCopyData(var msg: TWMCopyData);
begin
 if msg.CopyDataStruct.dwData = TProgramMeta.iUniqueMutexID then
  Blubb(msg, TParameterType.ptNull)
 else
  inherited;
end;

procedure Blubb(const ParameterList: string; const aParameterType: TParameterType);
begin
 showmessage(ParameterList);
end;
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.683 Beiträge
 
Delphi 5 Professional
 
#9

AW: Exe aufrufen und Rückgabewert auswerten

  Alt 21. Apr 2022, 20:34
Wenn man MSDN-Library durchsuchenShellExecuteEx mit dem Flag SEE_MASK_NOCLOSEPROCESS füttert oder MSDN-Library durchsuchenCreateProcess benutzt, kann man auf das Ende der Ausführung warten und dann letztlich mit MSDN-Library durchsuchenGetExitCodeProcess den Rückgabewert holen; ist dieselbe Funktion, mit der man prüft, ob der Prozess noch läuft.

Grüße
Dalai
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Exe aufrufen und Rückgabewert auswerten

  Alt 22. Apr 2022, 10:21
Hallo,
ProgrammB setzt den Exitcode (https://docwiki.embarcadero.com/Libr...%20Wert%20Null.).

Wie man das jetzt auswertet, finde ich nicht wirklich im Netz, vielleicht ja so
http://www.delphigroups.info/2/03/482203.html
Heiko
  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 20:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz