Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ShellExecute: Programm startet und schmiert ab (https://www.delphipraxis.net/116313-shellexecute-programm-startet-und-schmiert-ab.html)

Nils_13 26. Jun 2008 17:08


ShellExecute: Programm startet und schmiert ab
 
Hi,

ich möchte mit folgendem Code ein anderes Programm starten. Dieses schmiert jedoch sofort ab. Habt ihr eine Idee warum ? In manchen Projekten funktioniert der Code, in diesem und dem Standardprojekt von Delphi7 allerdings nicht.
Delphi-Quellcode:
ShellExecute(0, 'open', PChar(s), '', nil, SW_SHOWNORMAL);

Die Muhkuh 26. Jun 2008 17:16

Re: ShellExecute: Programm startet und schmiert ab
 
Hi,

das gestartete Programm schmiert ab?

Welchen Rückgabewert hat ShellExecute? Bringt das andere Programm eine Fehlermeldung?

Nils_13 26. Jun 2008 17:27

Re: ShellExecute: Programm startet und schmiert ab
 
Es gibt keine Fehlermeldung von ShellExecute (Rückgabewert 42). Bei bestimmten Programmen gibt es eine Fehlermeldung, bei anderen wiederum nicht.

Edit: Bei meinen eigenen Programmen tritt der Fehler teilweise auf. Ich sehe allerdings keinen Grund dafür. Es werden zumindest Meldungen ausgegeben, die zeigen, dass es am ShellExecute liegen muss.

DeddyH 26. Jun 2008 17:42

Re: ShellExecute: Programm startet und schmiert ab
 
Mal den Rechner neu gestartet? Ich kann an der einen Zeile Source nichts Fehlerträchtiges entdecken.

littleDave 26. Jun 2008 18:00

Re: ShellExecute: Programm startet und schmiert ab
 
Vielleicht hat das Programm ein Problem damit, dass du den aktuellen Ordner für die Instanz nicht setzt (nil-Parameter). Wenn ich ShellExecute aufrufe, mach ich es eigentlich immer gleich:

Delphi-Quellcode:
function ExecuteFile(aFileName, aParameters: string; aDirectory: string = ''; aExecMode: string = 'open'): integer;
var Folder: string;
begin
  Folder := aDirectory;
  if Folder = '' then
     Folder := ExtractFileDir(aFileName);
  result := ShellExecute(0, PChar(aExecMode), PChar(aFileName), PChar(aParameters), PChar(Folder), SW_SHOW);
end;

procedure TForm1.Button1Click(Sender: TObject)
var ExecResult : integer;
begin
  ExecResult := ExecuteFile(Edit1.Text, '');
  if ExecResult < 32 then
     // Fehlerbehandlung
end;

SirThornberry 26. Jun 2008 18:06

Re: ShellExecute: Programm startet und schmiert ab
 
ob nil oder ein Leerstring spielt keine Rolle. Vielmehr könnte es daran liege das einige Programmierer mit relativen Pfadangaben arbeiten und somit bei falschem Arbeitsverzeichnis (also Arbeitsverzeichnis <> Exe-Programmverzeichnis) bestimmte Dateien nicht gefunden werden.

Warum schenierst du dich eigentlich uns die genaue Fehlermeldung mitzuteilen? Willst du nicht das wir dir bei der Problemlösung helfen? :gruebel:

Nils_13 26. Jun 2008 18:47

Re: ShellExecute: Programm startet und schmiert ab
 
Danke littleDave, der Code ist nicht nur schön, sondern funktioniert auch. Dass es irgendetwas mit den Parametern zu tun hat, dachte ich mir bereits, aber daran nicht.
SirThornberry, ich habe oben gesagt, es gäbe keine direkte Fehlermeldung, es unterscheide sich von Programm zu Programm. Der Code war 42, was umgewandelt mit SysErrorMessage einen Leerstring ergibt.
Dann danke an den Rest für die Hilfsversuche!

Luckie 27. Jun 2008 08:29

Re: ShellExecute: Programm startet und schmiert ab
 
Zitat:

Zitat von Nils_13
Bei bestimmten Programmen gibt es eine Fehlermeldung,

Und warum verschweigst du uns die? :wall:

Nils_13 27. Jun 2008 08:50

Re: ShellExecute: Programm startet und schmiert ab
 
Wen juckt bitteschön eine Fehlermeldung aus einem meiner eigenen Programme, wenn ich nicht mal selbst weiß, was diese zu bedeuten haben ? :wall: geht zurück dafür, dass du dieses Thema ausgegraben hast und dadurch ein ungelöstes weiter abgerutscht ist.

Luckie 27. Jun 2008 12:26

Re: ShellExecute: Programm startet und schmiert ab
 
Zitat:

Zitat von Nils_13
Wen juckt bitteschön eine Fehlermeldung aus einem meiner eigenen Programme, wenn ich nicht mal selbst weiß, was diese zu bedeuten haben ?

Weil vielleicht wir es wissen könnten? Wenn sich das gestartet Programm zum Beispiel beschwert, dass es seine Dateien nicht findet, könnte das ein Hinweis sein, dass das Arbeitsverzeichnis nicht stimmt.

Zitat:

:wall: geht zurück dafür, dass du dieses Thema ausgegraben hast und dadurch ein ungelöstes weiter abgerutscht ist.
Wieso ausgegraben? Des war ein aktueller Thread.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:21 Uhr.

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