如何获取无边框全屏WPF / UWP窗口的DWP缩略图

时间:2019-06-18 13:55:07

标签: c# wpf dwm

我尝试使用以下代码捕获正在运行的应用程序的实时缩略图: 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 :(得分:0)

我使用Spy ++全屏检查了示例uwp应用程序的窗口样式。

enter image description here

样式是正常的,因此我对窗口句柄进行了硬编码,并且可以正常工作。经过一会儿的调试,事实证明EnumWindows方法没有返回此窗口,因此检查什么样式都没有关系。

所以我用这种方法寻找问题,并且有很多主题,例如: EnumWindows function in Win10 enumerates only desktop apps

答案 1 :(得分:0)

代替使用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;
            }