![]() |
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 :-)
|
Re: Fremdes Programm in VCL öffnen
Also ich habs mit Shellexecute gemacht
sieht jetzt so aus
Delphi-Quellcode:
so jetzt krieg ich aber die Message zu sehn und nicht das programm
procedure TForm38.Button1Click(Sender: TObject);
begin if ShellExecute(Application.Handle, 'open', PChar('C:\hhm.exe'), Nil, Nil, SW_NORMAL) <= 32 then ShowMessage('Es ist ein Fehler aufgetreten'); end; Ich hab mir bereits auch schon tutorials angeguckt wäre auch zufrieden wenn mit einfach jemand mal den Code schreiben könnte ihn erklärt und fertig |
Re: Fremdes Programm in VCL öffnen
Dann lass dir doch mal den nummerishen Rückgabewert anzeigen und guck hier nach, was er bedeutet:
![]() |
Re: Fremdes Programm in VCL öffnen
Ok danke hat sich erledigt auf irgendwelche Links gehn kann ich auch
Naja hatte gehofft das mal jemand einfach nen Code postet erklärt und fertig scheint ja wohl zu viel verlangt zu sein Trotzdem danke für die hilfreichen antworten |
Re: Fremdes Programm in VCL öffnen
Zitat:
![]() |
Re: Fremdes Programm in VCL öffnen
Zitat:
|
Re: Fremdes Programm in VCL öffnen
Ich hab nix gefunden und wie bereits gesagt gehofft das mir hier schnell geholfen werden kann aber das scheint ja wohl nicht der fall zu sein
|
Re: Fremdes Programm in VCL öffnen
Doch, es wurde dir alles Notwendige gezeigt. Du mosst halt die Rückgabe des ShellExecute auswerten.
|
Re: Fremdes Programm in VCL öffnen
Am schnellsten kannst du dir selber helfen, in dem du einige Grundlagentutorials gewissenhaft durcharbeitest, und evtl. das eine oder andere Buch dazu nimmst. Das ist hier ein Forum, keine Schule. Ohne die Bereitschaft an ein Mindestmaß an eigenem Einsatz ist Programmierung schlicht nicht machbar. Der Großteil hier hat sein Wissen auch über jahrelanges Dokumentationen wälzen, Ausbildungen, durchtüftelte Nächte und testen/probieren/scheitern/neuversuchen erlangt, und eben nicht durch vorgekauten Codebrei mit Sahne und Cocktailkirsche.
Und nachdem dir bereits recht detailiert und vergleichsweise geduldig Lösungen und Wege vorgeschlagen wurden noch mangelnde Hilfsbereitschaft vorzuwerfen ist einfach eine unglaubliche Frechheit, mehr nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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