Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Aktuelle Position aus externem Videoplayer auslesen (https://www.delphipraxis.net/174841-aktuelle-position-aus-externem-videoplayer-auslesen.html)

nezumi7 13. Mai 2013 18:59

Aktuelle Position aus externem Videoplayer auslesen
 
Liebe Leute,

ich möchte beim Anschauen selbstgedrehter mp4 Dateien eine Schnittliste erstellen.

Dazu müsste mein Programm bei Knopfdruck die aktuelle Position aus dem Videoplayer (am liebsten Media Player Classic, wenns nicht anders geht auch vlc) auslesen, also die aktuelle Zeit, die z.B. beim MPC unten rechts angezeigt wird.

MPC hat eine Kommandozeilensteuerung, aber wohl keinen Befehl, mit dem man die aktuelle Position abfragen kann (jedenfalls ist in der Hilfe kein entsprechender Befehl genannt).

Weiß jemand, ob das trotzdem geht und im Idealfall auch wie?

(Bei Google findet man zwar einen Eintrag, in dem der Befehl Get_CurrentPosition verwendet wird, mir ist aber schleierhaft wie das funktionieren soll).

Bin für jeden Tip dankbar!

Namenloser 13. Mai 2013 19:11

AW: Aktuelle Position aus externem Videoplayer auslesen
 
Du könntest versuchen, das Unterfenster zu finden, in dem die Position angezeigt wird (wenn die Statusleiste eingeblendet ist). WinSpy. Allerdings hat das Fenster keinen besonderen Namen, deshalb könnte es etwas schwierig werden. Außerdem ist es ziemlich unsauber.

Hast du ein aktuelles Visual Studio mit MFC zur Verfügung (Express reicht nicht)? Dann kannst du dir den Media Player Classic auch aus den Sourcen selbst bauen und deine Funktion reinpatchen. Ich fand den MPC relativ leicht zu kompilieren (nicht so wie viele andere Open-Source-Projekte).

nezumi7 13. Mai 2013 19:17

AW: Aktuelle Position aus externem Videoplayer auslesen
 
Hi NamenLozer,

danke für die schnelle Antwort. Mit WinSpy hab ichs auch schon versucht, aber aus dem Label kann man nichts auslesen. Den MPC selbst bauen ist mir wohl zu heftig. Bin vom Kenntnisstand her dazu nicht mal ansatzweise in der Lage....

nezumi

nezumi7 28. Aug 2014 11:31

AW: Aktuelle Position aus externem Videoplayer auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich krame das Thema nochmal vor.

Im MediaPlayer steht unten rechts die aktuelle Position des Videos (in mm:ss). Die will ich haben. Wenn ich Winspy (oder Eda) nehme, komme ich nicht nur an das Handle, es wird dort dann auch die Position als Fenstertitel angezeigt. Vgl. Bild im Anhang ("00:06"). Also muss es ja möglich sein, die auszulesen.

Habe es so versucht:
Delphi-Quellcode:
function FindWindowEx2(hParent: HWND; ChildClassName: string; ChildNr: Word): HWND;
var
  i: Word;
  hChild: HWND;
begin
  hChild := 0;
  Result := 0;
  ChildNr := ChildNr - 1;
  for i := 0 to ChildNr do
  begin
    hChild := FindWindowEx(hParent, hChild, PChar(ChildClassName), nil);
    if hChild = 0 then
      Exit;
    Result := hChild;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
wnd: hwnd;
lBuffer: String;
lSize : Integer;
begin
wnd := FindWindow('MediaPlayerClassicW', nil);
wnd := FindWindowEx2(wnd,'Static', 2);
//  wnd := 00040292;

if wnd <> 0 then begin
form1.Color := clgreen;
SetLength(lBuffer, 255);
lSize := SendMessage(wnd, WM_GETTEXT, Length(lBuffer), Integer(@lBuffer[1]));
Label1.Caption := copy(lBuffer, 1, lSize);
end;
end;

Wenn ich es bei "wnd := FindWindowEx2(wnd,'Static', 2)" belasse, wird kein handle gefunden (Formular wird nicht grün). Wenn ich stattdessen "wnd := 00040292" nehme, wird zwar ein handle gefunden, in Label 1 aber nichts angezeigt.

Was mache ich falsch?

LG, Stephan.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 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