Autor Beitrag
realerHanno
Hält's aus hier
Beiträge: 13

Win XP
Delphi Enterprise V7.0
BeitragVerfasst: So 12.10.14 17:13 
Hallo,

folgendes funktioniert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(0Nil, PChar('C:\Windows\System32\calc.exe'), NilNil, SW_NORMAL);
end;


Wenn ich nur den Pfad zu einem anderen Programm ändere, geht nichts mehr:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(0Nil, PChar('C:\RDM-TestUnit\XLoader\XLoader.exe'), NilNil, SW_NORMAL);
end;


Im Anhang ein Auszug aus der hierbei offerierten Meldung

Bin ein wenig ratlos...
realerhanno

Moderiert von user profile iconNarses: I- durch Delphi-Tags ersetzt
Moderiert von user profile iconNarses: BMP->PNG
Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am So 12.10.2014 um 22:14
Einloggen, um Attachments anzusehen!
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: So 12.10.14 17:26 
Was gibt ShellExecute denn zurück?
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
function ShellExecuteErrorMessage(ErrorCode: Integer): string;
begin
  case ErrorCode 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 gemeinsamen Zugriff auf eine Datei im Netz oder Fehler beim Zugriff auf eine gesperrte Datei im Netz.';
     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#10 + 'Die Datei muß dekomprimiert werden, bevor sie geladen werden kann.';
    20
      Result := 'Ungültige dynamische Linkbibliothek (DLL).' + #13#10 + 'Eine der DLLs, die benötigt wurde, um die Anwendung auszuführen, war beschädigt.';
    else
      Result := 'Ein Unbekannter Fehler ist aufgetreten. (' + IntToStr(ErrorCode) + ')';
  end;
end

procedure TForm1.Button1Click(Sender: TObject);
const
  MAX_ERROR_CODE = 32;
var
  ReturnCode: integer;
begin
  ReturnCode := ShellExecute(0Nil, PChar('C:\RDM-TestUnit\XLoader\XLoader.exe'), NilNil, SW_SHOWNORMAL);
  if ReturnCode <= MAX_ERROR_CODE then
    MessageBox(0, PChar(ShellExecuteErrorMessage(ReturnCode)), nil, MB_OK or MB_ICONERROR);
end;


P.S.: Die Funktion ShellExecuteErrorMessage ist von hier.
realerHanno Threadstarter
Hält's aus hier
Beiträge: 13

Win XP
Delphi Enterprise V7.0
BeitragVerfasst: So 12.10.14 20:05 
Hallo WasWeißDennIch,

ist schon dumm - ShellExecute gibt nichts zurück. Es kommt das Gleiche wie vorher.
Scheinbar ist der ReturnCode > als der MAX_ERROR_CODE.
Die exe läuft übrigens "normal", wenn ich sie direkt aus Windows aufrufe.
Ein Aufruf aus dem Dos-Fenster (C:\>) über "RDM-TestUnit\XLoader\XLoader.exe" erzeugt einen Windows-Fehler
"XLoader hat ein Problem festgestellt und muss beendet werden".
Ein Aufruf gleichermaßen, aber aus "C:\RDM-TestUnit\XLoader\" klappt wieder einwandfrei.
Ist für mich schon seltsam. Habe auch die Gegenprobe mit calc.exe gemacht, da gibt es kein Problem.
Ich denke hier an einen bug in dem XLoader-Programm... bloß wie krieg ich das raus??

Danke erstmal für die erste Mühe, Dich mit diesem Problem zu identifizieren....
realhanno
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: So 12.10.14 21:11 
Dann scheint das Programm intern mit relativen Pfaden zu arbeiten. Versuch doch mal, bei Deinem ShellExecute-Aufruf das Arbeitsverzeichnis festzulegen, das ist IIRC der vorletzte Parameter.