AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi CLI Programm in einem eigenen Fenster (Avidemux_cli.exe)
Thema durchsuchen
Ansicht
Themen-Optionen

CLI Programm in einem eigenen Fenster (Avidemux_cli.exe)

Ein Thema von aramintaros · begonnen am 28. Mai 2009 · letzter Beitrag vom 28. Mai 2009
Antwort Antwort
aramintaros

Registriert seit: 14. Mai 2008
48 Beiträge
 
#1

CLI Programm in einem eigenen Fenster (Avidemux_cli.exe)

  Alt 28. Mai 2009, 14:51
Hallo liebe Gemeinde,

seit 3 Tagen reiße ich mir ein Bein aus und lese und lese.... bin mitnerweile soweit und verstehe die Wichtigkeit der StartupInfo (CreateProcess), ihrer einzelnen Flags, und wie man diese benutzt.

Klappt soweit auch toll, wer hätte das gedacht Nun bin ich darüber gestolpert, daß ich die run.exe, nicht in mein Programmfenster bekomme.
(habe die avidemux2_cli.exe nur in run.exe umbenannt, ist kürzer, werde sie später wieder richtig bennen)

Habe dazu folgenden Code geschrieben.
Die Variablen h und j sind als globale Variablen bekannt, aber auch als "lokale" funzt es nicht.

Delphi-Quellcode:
var
                     Form1: TForm1;
                      h, j: Thandle;
   AviCmdLine, WindowsName: TEdit;

implementation
{$R *.dfm}

// Klappt wenn die Eingabeaufforderung auf dem Desktop ist. Setzt die Box ind die richtige Ecke und gibt Ihr die Länge und Höhe.
procedure TForm1.Button1Click(Sender: TObject);
begin
  h:=FindWindow(nil,'Eingabeaufforderung');
  If h<>0 then SetWindowPos(h,0, 0, 0, 670, 100, SWP_NOZORDER);
  edit1.Text:= GetCurrentDir + ' '+ IntToStr(GetActiveWindow);
end;

// Klappt auch wenn die Eingabeaufforderung auf dem Desktop ist, das Handle der Eingabeaufforderung wird auch angezeigt und das Panel ist der Owner.
procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
begin
  h:= Windows.FindWindow(nil, 'Eingabeaufforderung');
  Windows.SetParent(h, Panel1.Handle);
  Edit1.Text:= IntToStr(h);
end;

// Hier wird nur das Programm aufgerufen, arbeit seine Befehle ab und es passiert nichts von dem was ich oben hingekriegt habe, Warum nur??
procedure TForm1.Button3Click(Sender: TObject);
var i: integer;
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  AviCmdLine:= TEdit.Create(Self);

  FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
  StartupInfo.cb := Sizeof(TStartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow:=SW_Show;

  AviCmdLine.Text:=
  'C:\Programme\Avidemux 2.4\run.exe --load E:\FILME\os.avi --external-mp3 E:\FILME\os.mp3 --save E:\_OrdnerTest\ms.avi';

  WindowsName.Text:= 'C:\Programme\Avidemux 2.4\run.exe';
  for i:= 0 to 1 do
  begin
    CreateProcess(nil,
                 PChar(AviCmdLine.Text),
                 nil,
                 nil,
                 False,
                 NORMAL_PRIORITY_CLASS,
                 nil,
                 PChar('c:\'),
                 StartupInfo,
                 ProcessInfo);
    h:= Windows.FindWindow(nil, PChar(WindowsName.Text));
    j:= GetWindow(h, 0);
    Windows.SetParent(j, Panel1.Handle);
    WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
  end;
  CloseHandle(ProcessInfo.hProcess);
end;
Bin kein ausgefuchster Delphi-Programmierer und meine Kenntnise sind so lala, ihr seht's ja. Habe den Quelltxt der besseren Lesbarkeit etwas auseinander gezogen, mir ist das sehr Hilfreich.
Und bei diesem Ansatz brauche ich Hilfe, freu mich auf alles was ihr dazu zu sagen=schreiben habt
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#2

Re: CLI Programm in einem eigenen Fenster (Avidemux_cli.exe)

  Alt 28. Mai 2009, 14:54
Nur Verständnishalber:
Was hast Du vor? Magst Du die Ausgaben von avidemux_cli.exe in deinem Fenster anzeigen lassen?
Fridolin Walther
  Mit Zitat antworten Zitat
aramintaros

Registriert seit: 14. Mai 2008
48 Beiträge
 
#3

Re: CLI Programm in einem eigenen Fenster (Avidemux_cli.exe)

  Alt 28. Mai 2009, 15:07
Zitat von 0xF30FC7:
Nur Verständnishalber: Was hast Du vor? Magst Du die Ausgaben von avidemux_cli.exe in deinem Fenster anzeigen lassen?
Es stört und sieht nicht gut aus wenn ein anderes Fenster im Bildschrim ist, und da ich in meinem prog noch Platz habe soll es da hinein.
Wenn ich mein Prog in den Tray klicke soll der Avidemux weiter seine Arbeit verrichten.
Wenn ich die Daten durch eine Pipe filtern könnte wäre das auch nicht verkehrt, brauche es später um abzufragen ob das Video eine konstante oder variable AUDIOBITRATE hat.
Wenn ich diese Thema richtig verstehe, dann mache ich mich über die Pipe her. Aber das kommt später
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#4

Re: CLI Programm in einem eigenen Fenster (Avidemux_cli.exe)

  Alt 28. Mai 2009, 15:14
Damit hast Du meine Frage nicht beantwortet . Generell: Wenn Du die Ausgaben selbst anzeigen möchtest ohne das ein separates Kommandozeilen Fenster offen ist, ist die Lösung über Pipes die richtige.

Für ein Beispiel siehe z.B. hier:
http://www.delphipraxis.net/internal...ct.php?t=17004

Pipes haben allerdings ebenfalls einige Limitierungen, wie im Thread dort auch kurz angesprochen.
Fridolin Walther
  Mit Zitat antworten Zitat
aramintaros

Registriert seit: 14. Mai 2008
48 Beiträge
 
#5

Re: CLI Programm in einem eigenen Fenster (Avidemux_cli.exe)

  Alt 28. Mai 2009, 16:29
Zitat von 0xF30FC7:
Damit hast Du meine Frage nicht beantwortet . Generell:
Da habe ich dich wohl nicht richtig verstanden. Erkläre mir bitte was du dann damit meinst. (Magst Du die Ausgaben von avidemux_cli.exe in deinem Fenster anzeigen lassen?)
Werde deine Fragen selbstverständlich beantworten.
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:10 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