Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie kann ich eine andere Anwendung starten?? (https://www.delphipraxis.net/39240-wie-kann-ich-eine-andere-anwendung-starten.html)

Tommy111 30. Jan 2005 19:33


Wie kann ich eine andere Anwendung starten??
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich will aus einem eigenen Programm ein anderes (im Beispiel c:\test\xy.exe) starten. Den Pfad, aus dem das andere Programm gestartet werden soll, steht in einem Edit Feld als String in meinem eigenen Programm. Den String hab ich pfad genannt.

Hab folgendes probiert:
Code:
ShellExecute(Application.Handle, 'open' ,PChar(pfad), sw_ShowNormal);
Programmbeschreibung:
Mit dem Button Start auf Form2 will ich also das andere Programm, daß sich in dem angegebenen Pfad in Edit1 auf Form3 befindet, starten.

Das Programm befindet sich im Anhang!

Hat jemand von euch ne Idee, was ich da schon wieder falsch gemacht hab, oder sogar ne Lösung für mich?!

xineohp 30. Jan 2005 19:39

Re: Wie kann ich eine andere Anwendung starten??
 
moin,

ShellExecute erwartet IMHO sechs Parameter. Probiers mal mit:
Delphi-Quellcode:
ShellExecute(Application.Handle, 'open' ,PChar(pfad), nil, nil, sw_ShowNormal);
EDIT 1: Nicht vergessen die Unit ShellAPI einzubinden
EDIT 2: Außerdem solltest du das nächstemal angeben, was nicht funktioniert und welche Fehlermeldungen auftreten, dann kann dir effektiver geholfen werden.

Tommy111 31. Jan 2005 09:47

Re: Wie kann ich eine andere Anwendung starten??
 
moin,

also das mit dem ShellExecute hat jetz geklappt. Danke.

Aber wenn ich jetz eine *.exe Datei aufrufen will, öffnet der mir immer nur den Ordner wo diese Anwendung drinsteht, aber net die Anwendung selbst!

Folgendes steht:
Code:
implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
  with OpenDialog1 do begin
    Filter := 'App Files (*.exe)|*.exe|All Files(*.*)|*.*';
    DefaultExt := 'exe';
    if OpenDialog1.Execute then
    begin
      pfad := OpenDialog1.FileName;
      Edit1.Text := ExtractFilePath(pfad) + ExtractFileName(pfad);
    end;
  end;
end;

procedure TForm3.BitBtn1Click(Sender: TObject);
begin
  close
end;

procedure TForm3.Button2Click(Sender: TObject);
begin
  Edit1.Undo;
 
end;

end.
Also hier will ich noch zusätzlich den Pfad und den Namen der zu öffnenden Anwendung in ein Edit-Fenster schreiben.

So, un jetz will ich das im Edit-Fenster angegebene Programm über einen anderen Button starten.
Code:
ShellExecute(Application.Handle, 'open' ,PChar(pfad), nil, nil, sw_ShowNormal);

Luckie 31. Jan 2005 09:51

Re: Wie kann ich eine andere Anwendung starten??
 
Zitat:

Zitat von Tommy111
Also hier will ich noch zusätzlich den Pfad und den Namen der zu öffnenden Anwendung in ein Edit-Fenster schreiben.

So, un jetz will ich das im Edit-Fenster angegebene Programm über einen anderen Button starten.
Code:
ShellExecute(Application.Handle, 'open' ,PChar(pfad), nil, nil, sw_ShowNormal);

Ja dann gib es doch einfach an. In deiner Variablen pfad hast du doch alles drinne stehen, was du brauchst.

Im übrigen, das:
Delphi-Quellcode:
      pfad := OpenDialog1.FileName;
      Edit1.Text := ExtractFilePath(pfad) + ExtractFileName(pfad);
kannst du dir sparen. Worum zerlegst du erst den Pfad und fügst ihn dann wieder zusammen?

Tommy111 31. Jan 2005 10:04

Re: Wie kann ich eine andere Anwendung starten??
 
Ja aber der öffnet nicht direkt die Anwendung. Ich bekomm immer nur den Ordner geöffnet wo die Anwendung drinsteht! Ich will ja, daß der mir das Programm sofort öffnet, nachdem ich auf den Button gedrückt hab!!!

Luckie 31. Jan 2005 10:08

Re: Wie kann ich eine andere Anwendung starten??
 
Delphi-Quellcode:
uses
  ShellAPI;

procedure TForm1.Button1Click(Sender: TObject);
var
  pfad: String;
begin
  if OpenDialog1.Execute then
  begin
    pfad := OpenDialog1.FileName;
    ShellExecute(Application.Handle, 'open' ,PChar(pfad), nil, nil, sw_ShowNormal);
  end;
end;
Klappt wunderbar ohne Probleme, wie vermutet.

Tommy111 31. Jan 2005 10:17

Re: Wie kann ich eine andere Anwendung starten??
 
Hast Recht, es funktioniert.

Liegt bestimmt daran, daß ich die ShellExecute in einer anderen Unit stehen hab! Das muß aber doch auf gehen?!


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