AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fremdes Programm in VCL öffnen

Ein Thema von Lolzor · begonnen am 7. Jul 2008 · letzter Beitrag vom 9. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
Lolzor

Registriert seit: 2. Jun 2008
10 Beiträge
 
#1

Fremdes Programm in VCL öffnen

  Alt 7. Jul 2008, 18:01
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.
  Mit Zitat antworten Zitat
Benutzerbild von bigben37
bigben37

Registriert seit: 19. Dez 2007
Ort: Freiburg
116 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Fremdes Programm in VLC öffnen

  Alt 7. Jul 2008, 18:14
Das müsste mit shellexecute gehen
Benjamin
  Mit Zitat antworten Zitat
Lolzor

Registriert seit: 2. Jun 2008
10 Beiträge
 
#3

Re: Fremdes Programm in VLC öffnen

  Alt 8. Jul 2008, 00:02
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:
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.
Leider wird hhm.exe nicht geöffnet wenn ich auf den Button klicke.
Was nun? :/
  Mit Zitat antworten Zitat
Benutzerbild von p0w3r5tr34m3r
p0w3r5tr34m3r

Registriert seit: 18. Aug 2003
Ort: Monheim am Rhein
153 Beiträge
 
RAD-Studio 2009 Pro
 
#4

Re: Fremdes Programm in VLC öffnen

  Alt 8. Jul 2008, 00:25
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]
Florian Cülter
ich bin ein notorischer alles-klein-schreiber!

der 100. Beitrag nach 3 Jahren 25 Wochen und einem Tag
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Fremdes Programm in VLC öffnen

  Alt 8. Jul 2008, 09:27
Zitat von p0w3r5tr34m3r:
Working Directory (AWorkingDirectory) C:\
Warum C

@Lozlor: Warum machst du es dir unnötig schwer und nimmst nicht Shellexecute?
Zitat:
Leider wird hhm.exe nicht geöffnet wenn ich auf den Button klicke.
Was nun? :/
Hausaufgaben mache:
1. Fehlerbehandlung einbauen.
2. In Einzelschritten die Funktion debuggen und gucken wo es hängt.

Zu 1. Du hast doch schon die Abfrage drin
if CtreateProcess... Warum wertest du den nicht vorhandenen else-Block nicht aus und rufst dort MSDN-Library durchsuchenGetLastError auf? Dann weiß du gleich, was dein Fehler ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Lolzor

Registriert seit: 2. Jun 2008
10 Beiträge
 
#6

Re: Fremdes Programm in VLC öffnen

  Alt 8. Jul 2008, 13:30
Also das mit VLC ist n dummer Fehler den ich gleich beheben werden

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?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Fremdes Programm in VLC öffnen

  Alt 8. Jul 2008, 13:44
Zitat von Lolzor:
Dazu habe ich aber auch noch eine Frage wie füge ich die ShellAPI der Uses-Klausel hinzu?
Einfach ans Ende der Liste durch ein Komma getrennt den Unit Namen, hier ShellAPI, schreiben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Forlan
Forlan

Registriert seit: 17. Feb 2008
Ort: Herford
265 Beiträge
 
Delphi 2007 Architect
 
#8

Re: Fremdes Programm in VCL öffnen

  Alt 8. Jul 2008, 13:45
uses shellApi; O.o
Marcel
マルセル
www.youtube.com/beethoven1990
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Fremdes Programm in VLC öffnen

  Alt 8. Jul 2008, 14:01
Zitat von Lolzor:
Und ich hab erst mit delphi angefangen sprich ich weiss nicht wie man eine Fehlerbehandlung einbaut.

Dazu habe ich aber auch noch eine Frage wie füge ich die ShellAPI der Uses-Klausel hinzu?
Dann gebe ich Dir den Tip, Dir erst mal Grundlagen anzueignen.
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...
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Fremdes Programm in VCL öffnen

  Alt 8. Jul 2008, 14:03
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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 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