Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Rückgabewert von ShellExecute ? (https://www.delphipraxis.net/88174-rueckgabewert-von-shellexecute.html)

Hansa 11. Mär 2007 12:41


Rückgabewert von ShellExecute ?
 
Hi,

habe folgenden Source :

Delphi-Quellcode:
i := ShellExecute (...);
Im WinSDK sind zwar die Ergebniswerte aufgelistet, aber nur als Konstanten. Wo ist deklariert, welchen Zahlenwert die haben ? Lasse ich mir das i anzeigen, so wird 42 angezeigt. Was ist das jetzt ? :gruebel: Dann noch was : sofern ich das Programm per showmessage anhalte, sehe ich zwar die 42, aber nicht die Ausgabe des aufgerufenen Programms. Wie kann man verhindern, dass sich das Fenster sofort schließt ? Wäre schon interessant zu wissen, was die letzte Ausgabe des Programmes war.

fwsp 11. Mär 2007 12:53

Re: Rückgabewert von ShellExecute ?
 
http://www.michael-puff.de/Developer...lexecute.shtml

Luckie 11. Mär 2007 16:59

Re: Rückgabewert von ShellExecute ?
 
Zitat:

Zitat von Hansa
Im WinSDK sind zwar die Ergebniswerte aufgelistet, aber nur als Konstanten. Wo ist deklariert, welchen Zahlenwert die haben ?

Die kannst du in den entsprechenden Header-Dateien finden, die du im PSDK findest.

Zitat:

Wie kann man verhindern, dass sich das Fenster sofort schließt ? Wäre schon interessant zu wissen, was die letzte Ausgabe des Programmes war.
Das hat nichts mit ShellExecute zu tun, sondern mit dem aufgerufenen Programm.

Hansa 12. Mär 2007 19:27

Re: Rückgabewert von ShellExecute ?
 
Die Frage ist ja auch noch nicht geklärt. :???:

Zitat:

Zitat von Luckie
..Die kannst du in den entsprechenden Header-Dateien finden, die du im PSDK findest
...Das hat nichts mit ShellExecute zu tun, sondern mit dem aufgerufenen Programm.

1. Wo zum Teufel sind in den 266 bzw. 360 PSDK-MB diese minimalen Informationen zu finden ? :shock:

2. Wieso wird das Programm / Fenster geschlossen, ohne dass man die Ausgabe lesen kann ? Im DOS-Modus gestartet kehrt das auch nicht sang und klanglos zum Desktop zurück.

Klar, das geht auch, aber dann müssen ca. 10 Programme einzeln von Hand gestartet werden. Oder soll ich ein Delphi-Programm, welches diese anderen aufruft durch BAT ersetzen. Mit PAUSE, ERRORLEVEL und Co. ? :zwinker:

Luckie 12. Mär 2007 19:41

Re: Rückgabewert von ShellExecute ?
 
Nun ja, man könnte als aller erstes in der Header-Datei gucken, in der auch die Funktion deklariert ist.

Dass es sich um ein Konsolenprogramm handelt hättest du eventuell auch mal etwas früher erwähnen können. Wie verhält es sich denn wenn du es mit Doppelklick aus dem Explorer startest?

Hansa 13. Mär 2007 06:52

Re: Rückgabewert von ShellExecute ?
 
Selbes Spielchen : Fenster wird geschlossen. Werde wohl tatsächlich BAT bauen müssen.

r2c2 13. Mär 2007 08:14

Re: Rückgabewert von ShellExecute ?
 
Delphi-Quellcode:
ShellExecute(Application.Handle, 'open', 'cmd', '/K C:\Prog.exe', SW_SHOW);
mfg

Christian

ascotlx 13. Mär 2007 08:53

Re: Rückgabewert von ShellExecute ?
 
Moin moin ,

ich hab mal folgendes gefunden .... HTH :roteyes:

Delphi-Quellcode:
// *****************************************************************************
// auch abgeschrieben DSDT ;o)
function TForm3.ShellExecuteErrMessage(int_Code: INTEGER): string;
//Gibt die passenede Fehlermeldung zum ShellExecute Fehlercode zurück
begin
 case int_code of
   0: result := 'Zuwenig Speicher, ausführbare Datei war zerstört, Relokationswerte waren ungültig';
   2: result := 'Datei wurde nicht gefunden.';
   3: result := 'Verzeichnis wurde nicht gefunden.';
   5: result := 'Fehler beim Zugriff auf eine Datei.';
   6: result := 'Bibliothek forderte separate Datensegmente für jede Task an.';
   8: result := 'Zuwenig Speicher, um die Anwendung zu starten.';
  10: result := 'Falsche Windows-Version.';
  11: result := 'Ungültige ausführbare Datei. Entweder keine Windows-Anwendung oder Fehler in der EXE-Datei.';
  12: result := 'Anwendung für ein anderes Betriebssystem.';
  13: result := 'Anwendung für MS-DOS 4.0.';
  14: result := 'Typ der ausführbaren Datei unbekannt.';
  15: result := 'Versuch, eine Real-Mode-Anwendung (für eine frühere Windows-Version) zu laden.';
  16: result := 'Versuch, eine zweite Instanz einer ausführbaren Datei mit mehreren Datensegmenten die nicht als nur lesbar gekennzeichnet waren, zu laden.';
  19: result := 'Versuch, eine komprimierte ausführbare Datei zu laden.' + #13 + 'Die Datei muß dekomprimiert werden, bevor sie geladen werden kann.';
  20: result := 'Ungültige dynamische Linkbibliothek (DLL).' + #13 + 'Eine der DLLs, die benötigt wurde, um die Anwendung auszuführen, war beschädigt.';
 else
  result := 'Ein Unbekannter Fehler ist aufgetreten. (' + IntToStr(int_code) + ')';
 end;
end;
Gruss

ascotlx


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