Moin Zusammen,
ich hab' inzwischen noch mal experimentiert.
Ein Screenshot von Virtual Dub tut's problemlos, was mich vermuten lässt, dass dort kein Mediaplayer verwendet wird. (In den Sourcen konnte ich auch nichts entsprechendes finden)
Dann fiel mir zufällig auf, dass ein Screenshot von IrfanView auch Ok war.
Hierbei wird aber ganz offensichtlich ein über MCICreateWnd erzeugtes Fenster verwendet (für die die's interessiert: Unter
W2K in der msvfw32.dll zu finden, nicht wie's im
PSDK steht in der vfw32), und bei dem hatte ich das gleiche Problem.
Wiederum durch Zufall, bin ich nun darauf gekommen, dass ein Screenshot immer funktioniert, wenn das Formular einen Moment lang nicht sichtbar war.
Hat dafür jemand eine Erklärung?
So würde es gehen. Ist natürlich als Lösung indiskutabel:
Delphi-Quellcode:
MediaPlayer1.Display := Panel1;
MediaPlayer1.Close;
MediaPlayer1.Open;
Panel1.Width := Mediaplayer1.DisplayRect.Right - Mediaplayer1.DisplayRect.Left;
Panel1.Height := Mediaplayer1.DisplayRect.Bottom - Mediaplayer1.DisplayRect.Top;
WindowState := wsMinimized;
Application.ProcessMessages;
Sleep(100);
WindowState := wsNormal;
PS:
Bei der Suche bin ich auf ein Forum gestossen, in der empfohlen wurde die Hardwarebeschleunigung für die Anwendung, oder, zur Not im System abzuschalten (leider ohne Beispiel
). Dann wird kein Overlay verwendet. Dazu konnte ich dann leider für meine Geforce 2MX nichts finden.