AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi "Externer Prozess nicht möglich" bei ShellExecuteEx, Win11
Thema durchsuchen
Ansicht
Themen-Optionen

"Externer Prozess nicht möglich" bei ShellExecuteEx, Win11

Ein Thema von hoika · begonnen am 6. Mai 2022 · letzter Beitrag vom 6. Mai 2022
Antwort Antwort
hoika

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

AW: "Externer Prozess nicht möglich" bei ShellExecuteEx, Win11

  Alt 6. Mai 2022, 15:35
Hallo,

toll, Fehlermeldung wurde von uns "erfunden"

Delphi-Quellcode:
if CreateProcess then
begin
end
else
begin
  MessageBox(.. "externer Prozess nicht möglich");
end;
Und nein, nat. wird GetLastError nicht ausgewertet und angezeigt oder geloggt ...
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: "Externer Prozess nicht möglich" bei ShellExecuteEx, Win11

  Alt 6. Mai 2022, 15:43
Normalerweise schreibt man dann aber „Es ist ein Fehler aufgetreten“, so dass man gleich weiß, dass man an der Stelle geschlampt hat <sarcasm off>.
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 Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.236 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: "Externer Prozess nicht möglich" bei ShellExecuteEx, Win11

  Alt 6. Mai 2022, 15:44
Normalerweise schreibt man dann aber „Es ist ein Fehler aufgetreten“, so dass man gleich weiß, dass man an der Stelle geschlampt hat <sarcasm off>.
Ach komm. So genau will es doch keiner Wissen.

GetLastErrorCode schon ausgewertet?
Das ist bei sowas zwingend abzufragen.
Am besten im Programm in Logdatei schreiben lassen, falls man die Nummer dem Anwender nicht zumutet.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: "Externer Prozess nicht möglich" bei ShellExecuteEx, Win11

  Alt 6. Mai 2022, 17:04
Ist das nun der Fehlercode von ShellExecute, oder kommt der Fehler in der Batch?
OK, sowas macht man natürlich nicht.
GetLastError, SysErrorMessage, RaiseLastOSError und dann Fehlercode mit Nummer, Text und einem Zusatztext, damit man weiß wo im Programm (wenn man nicht schon Fehlerdialog mit Debuginfos hat)

Fehlerbehandlung mit MessageBoxen ist eh total krank, da man dort nicht mit TryFinally arbeiten kann.



Statt .BAT ein .CMD probiert?

CreateProcess statt ShellExecute.

....



Ist das Programm unsigniert
oder hat "böse" Wörter im Namen (setup usw.),
bzw. wie heißt die Batch?


Echt mal, warum kommt niemand auf die Idee den ErrorCode mit auszugeben?
Oder schaut selber nach, welcher Fehler das ist und gibt eine suchbare Bezeichnung an?
Der engliche Text oder den Name der Konstante, so ala ERROR_NO_PROC_SLOTS.




"geht nicht" oder einfach ein TerminateProcess als Reaktion, reicht vollkommen aus, wenn man sowieso zu nix Lust hat. (Letzteres macht Eurekalog und Co. auch gern, wenn ihnen was nicht gefällt)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Mai 2022 um 17:10 Uhr)
  Mit Zitat antworten Zitat
hoika

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

AW: "Externer Prozess nicht möglich" bei ShellExecuteEx, Win11

  Alt 6. Mai 2022, 19:27
Hallo,
nat. ist die Exe signiert (extended val.). pah

GetLastError, und der ganze andere Kram, pah

OK, mein Vorgänger kannte das nicht wirklich ...

Zitat:
warum kommt niemand auf die Idee den ErrorCode
Weil es auf dem eigenem Rechner und keinem Testrechner der Firma auftritt, Herr Naseweis

Nein, im Ernst, es zeigt wieder.
Aufruf fremden Codes komplett kapseln.

jaja, olle Besserwisser
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: "Externer Prozess nicht möglich" bei ShellExecuteEx, Win11

  Alt 6. Mai 2022, 20:18
Och, kapseln ist nicht unbedingt nötig, aber eine gute Fehlerbehandlung (ordentliche Auswertung aller Rückgabewerte) ist Gold wert.

Hätte man aber vorher die Fehlerbehandlung halbwegs richtig gemacht, dann hätte man jetzt mehr Infos ... gerade weil es ein Kundensystem ist und ihr in dem Moment nicht davor sitzt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: "Externer Prozess nicht möglich" bei ShellExecuteEx, Win11

  Alt 6. Mai 2022, 20:26
Delphi-Quellcode:
if not CreateProcess(...) then
  RaiseLastOSError; // das Minimum, was man nach Belieben ausbauen kann
...

Delphi-Quellcode:
if not CreateProcess(...) then begin
  Err := GetLastError;
  //raise Exception.CreateFmt('irgendwas: %d %s', [Err, SysErrorMessage(Err)]);
  E := EOSError.Create('irgendwas: ' + SysErrorMessage(Err));
  E.ErrorCode := Err; // ja, ist irgendwie total krank, dass Borland/Codegear/Embarcadero seit Jahrzehnten die passenden überladenen Contructoren vergessen hat.
  raise E;
end;
...
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Mai 2022 um 20:33 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 19: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