有条理地隐藏桌面截图中的特定窗口

时间:2011-04-26 16:41:21

标签: c# windows hide screenshot

这可能吗?我有三(3)个窗口:

  • Window1 - 未激活
  • Window2 - 未激活
  • Window3 - 有效

如果我拍摄桌面的屏幕截图,我希望Window3能够安静地隐藏。如果用户正在使用Window3,则程序不得以任何方式隐藏窗口,例如最小化它或任何东西。简而言之,我需要一种不显眼的方式来隐藏桌面屏幕截图中的特定窗口。

1 个答案:

答案 0 :(得分:0)

如果没有相当多的工作,这是不可能的。打印屏幕功能只是将桌面DC的内容复制到图像并将其放在键盘上。它实际上并没有将整个桌面重新渲染为新的DC。因此,它无法以静默方式删除特定窗口。

我想你可以挂钩打印屏幕按钮(或功能,无论它是什么)并允许它在剪贴板上创建图像。然后你的钩子可以从桌面上读取有问题的窗口的位置,并清除剪贴板上位图的那个区域。

你的钩子会这样做:

call the normal print screen function
load image from clipboard
get location and size of Window3 from desktop
fill that rectangle in the image with black (or whatever)
put the modified image back on the clipboard

当然,假设您可以挂钩打印屏幕功能。我怀疑这是可能的,虽然我从未尝试过。