Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   fremdes Programm aufrufen (https://www.delphipraxis.net/208403-fremdes-programm-aufrufen.html)

joacim 25. Jul 2021 12:40

AW: fremdes Programm aufrufen
 
@sinspin
Das aufzufende Programm liegt in einem Verzeichnis "unter" dem Verzeichnis meines Programms. Dort habe ich auch ein minimals Testprogramm abgelegt, dass ich problemlos (nach entsprechender Änderung des Aufrufstrings) starten kann.

Dalai 25. Jul 2021 14:03

AW: fremdes Programm aufrufen
 
Meine Empfehlung: Rückgaben von ShellExecute(Ex) auswerten und/oder mit Process Monitor überwachen, was genau passiert und mit welchen Ergebnissen. Das ist besser als Rumraten.

Grüße
Dalai

Sinspin 25. Jul 2021 15:30

AW: fremdes Programm aufrufen
 
Zitat:

Zitat von joacim (Beitrag 1492777)
@sinspin
Das aufzufende Programm liegt in einem Verzeichnis "unter" dem Verzeichnis meines Programms. Dort habe ich auch ein minimals Testprogramm abgelegt, dass ich problemlos (nach entsprechender Änderung des Aufrufstrings) starten kann.

Das glaube ich dir gerne. Trotzdem sind die beiden strings interessant wenn einmal von Explorer und einmal von deinen Programm aus aufgerufen.

himitsu 25. Jul 2021 18:07

AW: fremdes Programm aufrufen
 
Joar, Rückgaben sollte muß man eh immer auswerten
und natürlich immer schön mit vollständigen/absoluten Pfaden arbeiten.

z.B. die Open-/SaveDialoge ändern standardmmäßig das Arbeitsverzeichnis (und wer weiß wer sonst noch ... bzw. kann auch dein Programm bereit mit einem abweichendem Arbeitsverzichnis gestartet worden sein)

hoika 26. Jul 2021 06:09

AW: fremdes Programm aufrufen
 
Hallo,
erzeuge eine Bat-Datei mit dem Inhalt:
Start Dein-Programm

und rufe mal dies Bat-Datei in Deinem Programm auf.

shebang 26. Jul 2021 10:15

AW: fremdes Programm aufrufen
 
Zitat:

Zitat von Dalai (Beitrag 1492782)
mit Process Monitor überwachen

Den Vorschlag von Dalai kann ich nur unterstützen. Lass den Process Monitor mal mitlaufen und schau dir an, was die Exe genau macht.

joacim 28. Jul 2021 07:07

AW: fremdes Programm aufrufen
 
Ich habe jetzt alles in ein winziges Testprojekt gepackt und verwende
statt ShellExecuteEx jetzt ShellExecute, wg. Rückgabewert. Wie schon berichtet, kann ich ein eigenes Testprogramm erfolgreich per ShellExecute starten und bekomme als
Rückgabewert 42, d.h. über 32 also erfolgreicher Start. Beim eigentlich zu starteten
Programm bekomme ich als Rückgabewert auch 42, aber das Programmfenster wird nicht
(ev. nur sehr sehr kurz) angezeigt. Zusätzlich habe ich auch den MS Processmonitor mitlaufen lassen, falls das hilf, kann ich gerne Screenshots o.ä. posten.
Ganz am Ende der Liste sehe ich : Thread Exit, Process Exit. Das interpretiere ich als einen sofortigen Abbruch des zu startenden Programms. Fragt sich nur: warum?

Delphi.Narium 28. Jul 2021 10:28

AW: fremdes Programm aufrufen
 
Mache Dir bitte eine Batchdatei für den Aufruf des externen Programmes:
Code:
Programmaufruf, so wie per ShellExecute
pause
Diese Batchdatei rufst Du nun per Shellexecute auf, Pause sorgt dafür, dass das Fenster der Konsole offen bleibt. Damit kannst Du dann alle Fehlerausgaben des aufzufrufenden Programmes bzw. der Konsole sehen.

Per Tastendruck schließt sich das Fenster dann.

Wenn Du dann alle eventuell auftretenden Fehler behoben hast, kannst Du den Programmaufruf so, wie er in der Batchdatei erfolgreich ausgeführt wurde, per ShellExecute aus Deinem Programm heraus machen, ohne das Zwischenschalten der Batchdatei.

joacim 28. Jul 2021 13:20

AW: fremdes Programm aufrufen
 
Habe einen batchfile erstellt. Doppelklick auf den batchfile
startet wie gewünscht das fremde Programm cmd.exe bleibt stehen
und wartet auf einen Tastendruck, es gibt keine Fehlermeldungen.

Beim Aufruf des Batchfiles per shellexecute erscheint cmd.exe
und wartet auf einen Tastendruck, keine Fehlermeldungen aber auch kein
Fremdprogramm.

Dalai 28. Jul 2021 13:31

AW: fremdes Programm aufrufen
 
Dann solltest du die CMD mal das aktuelle Arbeitsverzeichnis ausgeben lassen:
Code:
echo %cd%
REM oder einfach nur
cd
und vielleicht generell auf das
Code:
@echo off
zu Beginn der Batch verzichten, sofern noch nicht passiert. Es muss ja einen Unterschied zwischen den beiden Startwegen geben.

Grüße
Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 Uhr.
Seite 2 von 3     12 3      

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