![]() |
AW: Ich liebe ShellExecute
Ich habe es mal bei mir getestet.
Bei mir wird entpackt, alle fein.
Delphi-Quellcode:
Frank
procedure TForm8.Button1Click(Sender: TObject);
Var ReturnCode: Integer; WorkFile: string; Params: string; Error: Integer; s: string; begin WorkFile := '"c:\Program Files\7-Zip\7z.exe"'; Params := 'x "d:\Buffer\Test 7z\Test.7z"'; s := WorkFile + ' ' + Params; // s = "c:\Program Files\7-Zip\7z.exe" x "d:\Buffer\Test 7z\Test.7z" ReturnCode := ShellExecute(0, 'open', PChar(Workfile),Pchar(Params), nil, SW_shownormal); Error := GetLastError; end; |
AW: Ich liebe ShellExecute
Schon einmal
Delphi-Quellcode:
probiert?
Workdir := ExtractFilepath(Workfile);
ShellExecute(0, 'open', PChar(Workfile),Pchar(Params), PChar(Workdir), SW_shownormal); |
AW: Ich liebe ShellExecute
Du musst ShellExecute das Arbeitsverzeichnis mitteilen ;-)
...:cat:... |
AW: Ich liebe ShellExecute
Siehe den Post über Deinem ;-)
|
AW: Ich liebe ShellExecute
@Uwe Raabe
Zitat : 'Bei ShellExecute ist das aktuelle Verzeichnis aber vermutlich ein anderes........' Also: Das funktioniert:
Delphi-Quellcode:
Das funktioniert:
ChDir('C:\Users\citybuilders\Eigene Projekte\Eigene Projekte Scanner\TEST');
WorkFile := '"C:\Users\citybuilders\Eigene Projekte\Eigene Projekte Scanner\TEST\7z.exe"'; Params := 'x "C:\Users\citybuilders\Eigene Projekte\Eigene Projekte Scanner\TEST\Villa.zip"'; ReturnCode := ShellExecute(Application.Handle,'open', PChar(Workfile),Pchar(Params),Nil, SW_shownormal);
Delphi-Quellcode:
Das funktioniert NICHT.
ChDir('C:\Users\citybuilders\Eigene Projekte\Eigene Projekte Scanner\TEST');
WorkFile := '"7z.exe"'; Params := 'x "Villa.zip"'; ReturnCode := ShellExecute(Application.Handle,'open', PChar(Workfile),Pchar(Params),Nil, SW_shownormal);
Delphi-Quellcode:
Das Verzeichnis mit chDir zu verlegen ist offensichtlich notwendig. Aber warum? Habe ich bisher im Zusammenhang mit ShellExceute nicht gebraucht. Fordert das die 7z.exe an?
WorkFile := '"C:\Users\citybuilders\Eigene Projekte\Eigene Projekte Scanner\TEST\7z.exe"';
Params := 'x "C:\Users\citybuilders\Eigene Projekte\Eigene Projekte Scanner\TEST\Villa.zip"'; ReturnCode := ShellExecute(Application.Handle,'open', PChar(Workfile),Pchar(Params),Nil, SW_shownormal); Jedenfalls danke ich allen für die Antworten und die Hilfe.:) creehawk Und da fällt mir noch was auf: das x für extract steht ausserhalb der Quotes der zip Datei. Das muss ventiliert werden. |
AW: Ich liebe ShellExecute
Schau Dir den vorletzten Parameter von ShellExecute noch einmal an.
|
AW: Ich liebe ShellExecute
Meine Version noch mal mit Output Directory:
Delphi-Quellcode:
Wenn es das Problem ist. Das Workdirectory muss man IMO nicht ändern, kann man aber (siehe DaddyH und Andere).
procedure TForm8.Button1Click(Sender: TObject);
Var ReturnCode: Integer; WorkFile: string; Params: string; Error: Integer; s: string; begin WorkFile := '"c:\Program Files\7-Zip\7z.exe"'; Params := 'x -o"d:\Buffer\Test 7z" "d:\Buffer\Test 7z\Test.7z"'; s := WorkFile + ' ' + Params; // s = "c:\Program Files\7-Zip\7z.exe" x -o"d:\Buffer\Test 7z" "d:\Buffer\Test 7z\Test.7z" ReturnCode := ShellExecute(0, 'open', PChar(Workfile),Pchar(Params), nil, SW_shownormal); Error := GetLastError; end; Frank |
AW: Ich liebe ShellExecute
Zitat:
Delphi-Quellcode:
),
-o"C:\irgendwo\"
aber zusätzlich das Arbeitsverzeichnis kann eh nie verkehrt sein, denn 7-Zip erstellt gern mal im Arbeitsverzeichnis Temp-Dateien.
Delphi-Quellcode:
WorkDir := 'd:\Buffer\Test 7z';
..., PChar(Params), PChar(WorkDir), SW_ShowNormal); Und in WorkFile gehören eigentlich keine Anführungszeichen, wenn mit dem zweiten Params-Parameter gearbeitet wird.
Delphi-Quellcode:
oder
{Operation,} CommandLine, nil {, WorkDir}
Delphi-Quellcode:
.
{Operation,} ProgramPath, Parameters {, WorkDir}
|
AW: Ich liebe ShellExecute
himitsu
Denk dran, der Pfad hat ein Leerzeichen... OK, habs gerade bei dir gelesen. Das in WorkDir keine Anführungszeichen benötigt werden, wusste ich nicht... |
AW: Ich liebe ShellExecute
Der Pfad "enthält" aber keine Anführungszeichen.
CommandLine <> Path CommandLine ist so, wie man es in der Console, bzw. Batch angiebt, inkl. der Parameter. Hier sind Leerzeichen = Trennzeichen. Und als Pfad ist es so, wie bei jeder anderen Win32-API auch. Und du gibst doch bei einem CreateFile oder MoveFile auch keine " mit an. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:28 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