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 Bouncing 1 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.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61:
| var Form1: TForm1; h, j: Thandle; AviCmdLine, WindowsName: TEdit;
implementation {$R *.dfm}
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;
procedure TForm1.Button2Click(Sender: TObject); var i: integer; begin h:= Windows.FindWindow(nil, 'Eingabeaufforderung'); Windows.SetParent(h, Panel1.Handle); Edit1.Text:= IntToStr(h); end;
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
