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 und UPX (https://www.delphipraxis.net/44314-shellexecute-und-upx.html)

Die Muhkuh 17. Apr 2005 17:36


ShellExecute und UPX
 
Hi,

jaja, das Shellexecute... :oops: .

Delphi-Quellcode:
procedure Tfmain.Button3Click(Sender: TObject);
var
  UPX: String;
begin
  UPX := ExtractFilePath(Application.ExeName) + 'upx.exe';

  if not FileExists(UPX) then
  begin
    ShowMessage('Can''t find upx.exe');
    Exit;
  end;

  ShellExecute(Handle, nil, PChar(UPX + ' ' + edSource.Text) , nil, nil, SW_SHOWNORMAL);
end;
Ich möchte, wenn ich auf den Button drück, das UPX ausgeführt wird und meine Datei packt. Aber wenn ich das so mache, dann passiert da nichts. Im edSource.Text steht die Datei samt Pfad. Ich habs auch schon mit ExtractFileName versucht, aber ich bekomm das nicht gebacken.

Wie kann ich nun UPX aufrufen, das meine Datei gepackt wird?

MathiasSimmack 17. Apr 2005 17:38

Re: ShellExecute und UPX
 
Parameter werden bei "ShellExecute" separat angegeben.

KLS 17. Apr 2005 17:48

Re: ShellExecute und UPX
 
Delphi-Quellcode:
procedure Starteprogramm(Pfad : string; parameter : string = '');
begin
  ShellExecute(0,'open',PChar(Pfad),PChar(parameter),nil,SW_SHOW);
end;
Du kannst aber auch "UPX shell" benutzen, das hat eigentlich schon alles was das herz begeehrt.

fylo 18. Apr 2005 07:26

Re: ShellExecute und UPX
 
Hi

versuch vieleicht auch noch aus dem String
Delphi-Quellcode:
UPX := ExtractFilePath(Application.ExeName) + 'upx.exe';
ein
Delphi-Quellcode:
UPX := ExtractFilePath(Application.ExeName) + '\upx.exe';
mit dem "\" vor upx.exe zu machen.

Boombuler 18. Apr 2005 08:30

Re: ShellExecute und UPX
 
Zitat:

Zitat von fylo
Hi

versuch vieleicht auch noch aus dem String
Delphi-Quellcode:
UPX := ExtractFilePath(Application.ExeName) + 'upx.exe';
ein
Delphi-Quellcode:
UPX := ExtractFilePath(Application.ExeName) + '\upx.exe';
mit dem "\" vor upx.exe zu machen.

Oder einfach die Funktion: IncludeTrailingPathDelimiter benutzen...

Greetz
Boombuler

Nogge 20. Apr 2005 14:58

Re: ShellExecute und UPX
 
Das ist die korrekte Art, eine Datei zu öffnen:
Delphi-Quellcode:
  ShellExecute(handle,'open',PChar(extractfilename(filename)),
  PChar(parameters),PChar(extractfilepath(filename)),SW_NORMAL);
Btw der Backslash darf hier nicht gesetzt werden:
Delphi-Quellcode:
  UPX := ExtractFilePath(Application.ExeName) + '\upx.exe';

MathiasSimmack 20. Apr 2005 15:04

Re: ShellExecute und UPX
 
Zitat:

Zitat von Nogge
Delphi-Quellcode:
  shellexecute(handle,'open',PChar(extractfilename(filename)),PChar(parameters),
  PChar(extractfilepath(filename)),SW_NORMAL);
das ist die korrekte art, eine datei zu öffnen.

Mit "ExtractFileName(filename)"? Na ja, bei Programmen, die in der Umgebung bekannt sind (PATH) mag das gehen.

Zitat:

btw der backslash darf nicht gesetzt werden.
:gruebel: :wiejetzt:

Nogge 20. Apr 2005 15:32

Re: ShellExecute und UPX
 
Zitat:

Mit "ExtractFileName(filename)"? Na ja, bei Programmen, die in der Umgebung bekannt sind (PATH) mag das gehen.
Hö? Was willst du mir damit sagen?

alcaeus 20. Apr 2005 15:35

Re: ShellExecute und UPX
 
Zitat:

Zitat von Nogge
Zitat:

Mit "ExtractFileName(filename)"? Na ja, bei Programmen, die in der Umgebung bekannt sind (PATH) mag das gehen.
Hö? Was willst du mir damit sagen?

Dass du damit den Pfad der anderen Anwendung wegschnipselst. Wenn der Pfad der Anwendung nicht in der PATH-Variable festgelegt wurde, startet da gar nichts!

Greetz
alcaeus

Nogge 20. Apr 2005 15:42

Re: ShellExecute und UPX
 
Also bei mir funktioniert alles korrekt. Euer angeblicher Pfad-Parameter ist aber in Wirklichkeit der FileName-Parameter, erst nach dem Parameter-Parameter kommt der DIR-Parameter, worin ich den Pfad für die Datei angegeben habe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:08 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