![]() |
Fremdes Programm in VCL öffnen
Ich würde gerne wissen wie ich ein fremdes Programm z.B. eine Verknüpfung mit einem Spiel o.ä. öffne.
Das ganze sollte so aussehen: Ein Formular mit einem Button Wenn man auf den Button klickt öffnet sich das Programm/die Datei. Bisher habe ich nur das Formular mit dem Button darauf datz gibt es ja herzlich wenig source-code, deswegen werde ich auch keinen hier posten^^ Ich hoffe ihr könnt mir weiterhelfen. Danke schonmal im Voraus. |
Re: Fremdes Programm in VLC öffnen
Das müsste mit
![]() |
Re: Fremdes Programm in VLC öffnen
Ok danke schonmaö ich bin auf die Seite gegangen unten stand aber das man für Programme besser CreateProcess nimmt
Das sieht bei mir bis jetzt so aus
Delphi-Quellcode:
Leider wird hhm.exe nicht geöffnet wenn ich auf den Button klicke.
unit Unit25;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm25 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form25: TForm25; implementation {$R *.dfm} type TExecuteWaitEvent = procedure(const ProcessInfo: TProcessInformation; var ATerminate: Boolean) of object; procedure ExecuteFile(const AFilename: String; AParameter, ACurrentDir: String; AWait: Boolean; AOnWaitProc: TExecuteWaitEvent=nil); var si: TStartupInfo; pi: TProcessInformation; bTerminate: Boolean; begin bTerminate := False; if Length(ACurrentDir) = 0 then ACurrentDir := ExtractFilePath(AFilename); if AnsiLastChar(ACurrentDir) = '\' then Delete(ACurrentDir, Length(ACurrentDir), 1); FillChar(si, SizeOf(si), 0); with si do begin cb := SizeOf(si); dwFlags := STARTF_USESHOWWINDOW; wShowWindow := SW_NORMAL; end; FillChar(pi, SizeOf(pi), 0); AParameter := Format('"%s" %s', [AFilename, TrimRight(AParameter)]); if CreateProcess(Nil, PChar(AParameter), Nil, Nil, False, CREATE_DEFAULT_ERROR_MODE or CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, Nil, PChar(ACurrentDir), si, pi) then try if AWait then while WaitForSingleObject(pi.hProcess, 50) <> Wait_Object_0 do begin if Assigned(AOnWaitProc) then begin AOnWaitProc(pi, bTerminate); if bTerminate then TerminateProcess(pi.hProcess, Cardinal(-1)); end; Application.ProcessMessages; end; finally CloseHandle(pi.hProcess); CloseHandle(pi.hThread); end; end; procedure TForm25.Button1Click(Sender: TObject); begin ExecuteFile('c:\hhm.exe', '', '', false); end; end. Was nun? :/ |
Re: Fremdes Programm in VLC öffnen
wenn ich das um diese Uhrzeit noch richtig verstehe musst du als Dateinamen (AFileName) hhm.exe einsetzen und als Working Directory (AWorkingDirectory) C:\
Delphi-Quellcode:
procedure TForm25.Button1Click(Sender: TObject);
begin ExecuteFile('hhm.exe', '', 'C:\', false); end; Mit freundlichen Grüßen [edit]sicher das du VLC meinst und nicht VCL?[/edit] |
Re: Fremdes Programm in VLC öffnen
Zitat:
@Lozlor: Warum machst du es dir unnötig schwer und nimmst nicht Shellexecute? Zitat:
1. Fehlerbehandlung einbauen. 2. In Einzelschritten die Funktion debuggen und gucken wo es hängt. Zu 1. Du hast doch schon die Abfrage drin
Delphi-Quellcode:
Warum wertest du den nicht vorhandenen else-Block nicht aus und rufst dort
if CtreateProcess...
![]() |
Re: Fremdes Programm in VLC öffnen
Also das mit VLC ist n dummer Fehler den ich gleich beheben werden :P
Und ich hab erst mit delphi angefangen sprich ich weiss nicht wie man eine Fehlerbehandlung einbaut. Ich habs nich shellexecute nicht probiert da auch auf der seite steht das man für Programme(also das was ich starten will) lieber CreateProcess nimmt werde es jetzt aber auch mal mit shellexecute ausprobieren. Dazu habe ich aber auch noch eine Frage wie füge ich die ShellAPI der Uses-Klausel hinzu? |
Re: Fremdes Programm in VLC öffnen
Zitat:
|
Re: Fremdes Programm in VCL öffnen
Delphi-Quellcode:
O.o
uses shellApi;
|
Re: Fremdes Programm in VLC öffnen
Zitat:
Es gibt viele Bücher oder Tutorials für Einsteiger. Mit allzu vielen Anfänger-Fragen verdirbst Du den Leuten hier nämlich den Spass am Helfen. Wir helfen gerne, aber einige Vorkenntnisse sollten schon vorhanden sein. Deine Frage mit den Uses ist so eine Frage... |
Re: Fremdes Programm in VCL öffnen
Es gibt eigentlich keinen vernünftigen Grund CreateProcess anstelle von ShellExecute zu verwenden wenn einem die Rückgabewerte von ShellExecute genügen. Zudem ist eine Verknüpfung zum Beispiel kein Programm :-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 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