Как получить миниатюру dwp полноэкранного wpf / uwp окна без полей - PullRequest
1 голос
/ 18 июня 2019

Я попытался захватить в реальном времени миниатюру запущенных приложений, используя следующие коды: http://community.bartdesmet.net/blogs/bart/archive/2006/10/05/4495.aspx

Я успешно захватил некоторые приложения, кроме этих полноэкранных окон без полей.

Я на самом деле пытаюсь захватить приложение UWP, которое воспроизводит видео в полноэкранном режиме, и интегрировать миниатюру в мое приложение. Мне не нужно получать растровое изображение, мне просто нужно отображать его в реальном времени.

Я пытался изменить значения

GWL_STYLE WS_VISIBLE WS_BORDER

но ничего из этого не работает.

При попытке окна Alt + Tab, Windows 10 DWM может обработать его и отображает миниатюру в реальном времени, поэтому я считаю, что это может работать с некоторыми небольшими изменениями в коде.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Вместо использования EnumWindows, получите все окна, используя этот метод, и вставьте логику фильтра для желаемого обработчика окон

            IntPtr thisWindow = IntPtr.Zero ;
            IntPtr desktopWindow = GetDesktopWindow();
            while (true)
            {
            if (desktopWindow == IntPtr.Zero)
            break;

            IntPtr nextWindow = FindWindowEx(desktopWindow, thisWindow, null, null);
            if (nextWindow == IntPtr.Zero)
            break;

            /** your code here **/

            thisWindow = nextWindow;
            }
0 голосов
/ 19 июня 2019

Я проверил стили окна для примера приложения uwp в полноэкранном режиме с помощью Spy ++.

enter image description here

Стили были нормальными, поэтому я жестко закодировал дескриптор окна иэто сработало.После некоторой отладки выяснилось, что метод EnumWindows не возвращает это окно, поэтому не имеет значения, какие стили были проверены.

Поэтому я искал проблему с этим методом, и есть много тем,например: Функция EnumWindows в Win10 перечисляет только настольные приложения

...