Delphi-PRAXiS
Seite 1 von 3  1 23      

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 08:47

fremdes Programm aufrufen
 
Hallo,
mit der Quelle aus
https://www.delphipraxis.net/31067-s...cute-wait.html
kann man gut fremde Programme aus dem eigenen Programm heraus aufrufen.
Das habe ich schon erfolgreich gemacht Jetzt habe ich ein Fremdprogramm, bei dem das nicht klappt. Es gibt nur wenige Informationen zu diesem Fremdprogramm.

- mit einem Doppelklick kann es problemlos gestartet werden
- es ist wohl in Fortran geschrieben und eine 64 Bit Anwendung

Im Taskmanager kann ich nicht sehen, dass das Programm geöffnet wird, ev. geht es einfach zu schnell. Im Aufruf wir ja auf Beendigung des Fremdprogramms gewartet, da geht es sofort nach dem Start weiter. Wie schon gesagt, mit einem kleinen (eigenen) Testprogramm klappt alles. Ich habe den Eindruck, das es da „zwei Stufen“ gibt, und die erste Stufe sofort beendet wird. (Aufruf cmd.com ?)

himitsu 25. Jul 2021 08:57

AW: fremdes Programm aufrufen
 
Starten (explorrer)
Starten und warten (du)
das ist ein Unterschied (das Starten geht ja dennoch)

Scripte usw., welche durch ein anderes Programm interpretiert werden,
da startest du nicht "diese" Datei, sondern ein anderes Programm, welche sie öffnet.
(BAT, PS1, JAVA, BAS, PAS, TXT, DOC, .......)
Hier kann man selbst direkt das andere Programm starten und ihm die Datei als Parameter geben,
anstatt es automatisch machen zu lassen.

Und es gibt Programme, die nutzen einen Loader.
z.B. BDSLauncher.exe vs. BDS.exe im Delphi, oder bei MS-Office usw.

Da wird der Launcher absichtlich wieder beendet, bevor das Ganze fertig ist.
und dein Warten wartet nur auf die erste gestartete EXE (den Launcher), aber von der Anderen weiß sie nichts.
-> man könnte über die ToolsAPI nach anderen Prozessen suchen, welche diesen Prozess als Parent haben und auch auf deren Ende warten.

joacim 25. Jul 2021 09:19

AW: fremdes Programm aufrufen
 
@himitsu
schönen Sonntag! und danke.
Sowas in der Art habe ich mir schon gedacht.
Ich glaube in D6 geht das mit ToolsAPI noch nicht.

Und bitte nicht über die alte Version meckern, ich pflege immer noch
ein damit erstelltes Programm, dass alle Windows Umstellungen seit
WIN95 klaglos überstanden h.

himitsu 25. Jul 2021 09:26

AW: fremdes Programm aufrufen
 
Nicht die OpenToolsAPI (OTA) von Delphi, womit man in die Delphi-IDE rein kommt,
sondern die von Windows, um in Windows reinzukommen. :wink:

https://docs.microsoft.com/en-us/win...ss-enumeration

* MSDN-Library durchsuchenCreateToolHelp32Snapshot + MSDN-Library durchsuchenProcess32First/Process32Next
* MSDN-Library durchsuchenEnumProcesses hilft nicht viel, wenn man damit nicht an Parent oder Childs kommt


32 ist OK, denn es geht um die Win32-APIs und die sind in 32 und 64 Bit das Gleiche (bzw. auch in 64 Bit heißt sie Win32 ... ist wie die APIs von WinRT oder .NET).

zeras 25. Jul 2021 09:35

AW: fremdes Programm aufrufen
 
Wie sieht denn der Aufruf beim Doppelklick aus? Welche Datei soll gestartet werden?
Was passiert, wenn du das Programm mit der Konsole (cmd.com) startest? Kommen da vielleicht Meldungen?
Bei einem Icon gibt es auch noch die Zeile "Ausführen in". Ist da vielleicht etwas eingetragen?

joacim 25. Jul 2021 09:52

AW: fremdes Programm aufrufen
 
mit cmd.com starte das Programm ganz normal, es gibt keine weiteren
Ausgaben. In Eignschaften ist kein weiterer Eintrag

zeras 25. Jul 2021 10:07

AW: fremdes Programm aufrufen
 
Zitat:

Zitat von joacim (Beitrag 1492766)
mit cmd.com starte das Programm ganz normal, es gibt keine weiteren
Ausgaben.

Ist das eine Exe oder hat das Programm eine andere Dateiendung?

joacim 25. Jul 2021 10:44

AW: fremdes Programm aufrufen
 
Das Programm ist eine Exe

blawen 25. Jul 2021 10:52

AW: fremdes Programm aufrufen
 
Zitat:

Zitat von himitsu (Beitrag 1492762)
Starten (explorrer)
Starten und warten (du)
das ist ein Unterschied (das Starten geht ja dennoch)

Und wenn Du das Programm via dem ersten Weg (Shellexecute) startest?

Sinspin 25. Jul 2021 12:31

AW: fremdes Programm aufrufen
 
Ich denke das liegt am Verzeichnis in dem ausgeführt wird.

Schreib mal zum Test ein Programm das dir beim Start den Wert aus
Delphi-Quellcode:
ParamStr(0)
ausgibt und den Wert von
Delphi-Quellcode:
GetCurrentDir
.
Dann teste mit Explorer, CMD und deinem Programm.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:03 Uhr.
Seite 1 von 3  1 23      

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