Mein von qt erstellter Videoplayer kann nicht für meine Wallpaper-Engine verwendet werden [Duplikat]C++

Programme in C++. Entwicklerforum
Anonymous
 Mein von qt erstellter Videoplayer kann nicht für meine Wallpaper-Engine verwendet werden [Duplikat]

Post by Anonymous »

Ich schreibe ein Video mit qt und c++ für meine Wallpaper-Engine. Die Logik meiner Wallpaper-Engine besteht darin, eine Nachricht 0x52c an das Programm-Manager-Fenster zu senden. Anschließend wird ein Fenster vom Typ WorkerW erstellt. Danach legt die Wallpaper-Engine den Videoplayer als untergeordnetes Fenster dieses WorkerW-Fensters fest. Der Videoplayer ist tatsächlich wie gewünscht als untergeordnetes Fenster des WorkerW-Fensters festgelegt. Allerdings lässt sich das Video nicht auf meinem Desktop abspielen. Ich habe versucht, die Schnittstelle meines QT-Programms direkt als untergeordnetes Fenster dieses Fensters festzulegen, aber es funktioniert immer noch nicht. Es folgt der Screenshot der Struktur meiner Fenster.
Image

?????-V3.0.0 ist mein Videoplayer und aus diesem Screenshot können wir ersehen, dass der Videoplayer bereits als untergeordnetes Fenster des WorkerW-Fensters festgelegt ist. Das Video wird nicht auf meinem Desktop angezeigt. Könnte mir jemand den Grund nennen?
P.S. Das Folgende ist der wesentliche Teil meiner Wallpaper-Engine:

Code: Select all

int sleepTime = sleepTimeEdit->text().toInt();
Sleep(sleepTime);

HWND hProgman = FindWindow(L"Progman", 0);
SendMessageTimeout(hProgman, 0x52c, 0, 0, 0, 100, 0);

//Extract video name
QFileInfo fileinfo(newVideoPath);
QString videoName = fileinfo.fileName();

//convert videoName from QString to wstring
videoName = videoName + " - mpv";
std::wstring wVideoName = videoName.toStdWString();
LPCWSTR windowName = wVideoName.c_str();

//find my video player window
HWND hMpvWindow = FindWindow(0, L"?????-V3.0.0");

// whether window SHELLDLL_DefView is still in the Progman, cause after version 24H2, Progman will not split to three different windows after receiving 0x52c
HWND hDefView = FindWindowEx(hProgman, 0, L"SHELLDLL_DefView", 0);
if (hDefView != NULL)
{
HWND hWorkerW = FindWindowEx(hProgman, 0, L"WorkerW", 0);
if (hWorkerW != NULL)
{
SetParent(hMpvWindow, hWorkerW);
ShowWindow(hDefView, SW_HIDE);
Sleep(0);
ShowWindow(hDefView, SW_SHOWNORMAL);
}
}
else
{
SetParent(hMpvWindow, hProgman);
EnumWindows(EnumWindowsProc, 0);
}
Und es folgt die Benutzeroberfläche meines Videoplayers, wenn er ein Video abspielt:
Image

Meine letzte Frage lautet also: Warum kann der Videoplayer, den ich mit qt schreibe, nicht angezeigt werden, wenn meine Wallpaper-Engine ihn als untergeordnetes Fenster von WorkerW festgelegt hat? Fenster?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post