BitBlt和ElementHost无法在某些机器上运行

时间:2018-01-17 10:34:36

标签: c# .net wpf bitblt

这是一个奇怪的问题。

我正在使用BitBlt从与我的(WinForms)窗口句柄关联的设备上下文复制到位图,它可以正常工作(或者我认为)。

但是有一台机器,其中ElementHost中的WPF元素只是没有出现在位图上:没有一个洞,就好像它们是透明的一样,反而出现了什么。

我一直在玩一个VM,一个工作,另一个没工作。他们都有相同的操作系统版本,我已经削减了已安装的程序和功能,两者都是相同的,但仍有一个有效,另一个无效。

有没有人遇到过这个问题,有没有人有任何想法从哪里开始搜索?

更新:感谢评论中的jsanalytics提示,我发现它是Aero,可以阻止屏幕截图正常工作。现在来弄清楚为什么以及该做些什么......

1 个答案:

答案 0 :(得分:1)

这不是 的答案,但它暂时对我有用:

如果

[DllImport("dwmapi.dll", PreserveSig = false)]
public static extern int DwmIsCompositionEnabled(out bool enabled);

返回true,然后取代BitBlt窗口的设备上下文,我BitBlt整个桌面,但裁剪到窗口的大小(使用GetWindowRect并调整创建了大小的位图,然后将左侧和顶部传递到BitBlt)。