Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Ich liebe ShellExecute (https://www.delphipraxis.net/210614-ich-liebe-shellexecute.html)

creehawk 18. Mai 2022 07:39

Ich liebe ShellExecute
 
Moin Moin.

Wenn ich zu Fuß via Console eingebe:
Code:
C:\Users\citybuilders\Eigene Projekte\Eigene Projekte Scanner\TEST>7z.exe x aaaaaa.7z
macht er genau das was er soll: entpacken der 7z Datei.

In meinem Wahn setze ich das dann um in eine ShellExecute Anweisung.
Delphi-Quellcode:
  begin
    WorkFile := '"' + PrgPath + 'Test\7z.exe"';
    Params  := '" x AAAAAA.7z"';
    ReturnCode := ShellExecute(0, 'open', PChar(Workfile),Pchar(Params), nil, SW_shownormal);
    Error := GetLastError;
  end;
Returncode ist 42, angeblich ja alles primstens, ErrorCode ist 0, Ergebnis ist : Nichts. Das Archiv wird nicht entpackt.

Meine Frage: Wen erschiesse ich zu erst : den Computer oder mich?

creehawk

Gausi 18. Mai 2022 07:44

AW: Ich liebe ShellExecute
 
Sind die Gänsefüßchen (") bei Params evtl. das Problem?

creehawk 18. Mai 2022 07:51

AW: Ich liebe ShellExecute
 
Nein, leider nicht. Ob mit oder ohne . geht nicht.

creehawk

Uwe Raabe 18. Mai 2022 08:48

AW: Ich liebe ShellExecute
 
Was genau steht denn in PrgPath?

creehawk 18. Mai 2022 09:09

AW: Ich liebe ShellExecute
 
Naja, dies hier:
Code:
C:\Users\citybuilders\Eigene Projekte\Eigene Projekte Scanner\
Hole ich zur Laufzeit über :

Delphi-Quellcode:
  PRGPath := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));


creehawk

BlueStarHH 18. Mai 2022 09:15

AW: Ich liebe ShellExecute
 
Gib mal einen vollen Pfad zur AAAAAA.7z an. Evtl. sucht er die ganz woanders.

creehawk 18. Mai 2022 09:22

AW: Ich liebe ShellExecute
 
Delphi-Quellcode:
begin
  WorkFile :=  'C:\Users\citybuilders\Eigene Projekte\Eigene Projekte Scanner\TEST\7z.exe';
  Params  := 'x C:\Users\citybuilders\Eigene Projekte\Eigene Projekte Scanner\TEST\AAAAAA.zip';
  ReturnCode := ShellExecute(0, 'open', PChar(Workfile),Pchar(Params), nil, SW_shownormal);
  Error := GetLastError;
  showmessage(ReturnCode.tostring);
  showmessage(Error.tostring);
end;
Und immer noch nix.

creehawk

Der schöne Günther 18. Mai 2022 09:24

AW: Ich liebe ShellExecute
 
Das verb "open" halte ich für falsch bei einer .exe-Datei. Versuch doch mal NULL/nil

https://docs.microsoft.com/en-us/win...tew#parameters

creehawk 18. Mai 2022 09:34

AW: Ich liebe ShellExecute
 
Und immer noch nix. Ob Nil oder Null.

Ich habe in anderen Programmen diese Form des Aufrufs verwendet. Funktionierte anstandslos. Und die 42 als Antwort fasse ich als OK auf.

Sehr rätselhaft.

creehawk

Uwe Raabe 18. Mai 2022 09:38

AW: Ich liebe ShellExecute
 
Wenn du das per Kommandozeile startest, bist du dann in dem TEST Verzeichnis? (immerhin wird die 7z-Datei ja dort ohne Pfad angegeben)
Dann wäre die Pfadangabe bei der EXE aber redundant.

Bei ShellExecute ist das aktuelle Verzeichnis aber vermutlich ein anderes sein, weswegen dort die Pfade hilfreich sind.

Ich habe da ja die Leerzeichen in Verdacht. Vielleicht probierst du es mal in einem Pfad ohne diese.

Für den aktuellen Fall käme noch folgender Ansatz mit Quotes in Betracht:
Delphi-Quellcode:
  WorkFile := '"C:\Users\citybuilders\Eigene Projekte\Eigene Projekte Scanner\TEST\7z.exe"';
  Params := 'x "C:\Users\citybuilders\Eigene Projekte\Eigene Projekte Scanner\TEST\AAAAAA.zip"';


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 Uhr.
Seite 1 von 2  1 2      

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