【问题标题】:Conditionally hiding specific window from desktop screenshot有条件地从桌面屏幕截图中隐藏特定窗口
【发布时间】:2011-08-13 04:56:41
【问题描述】:

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

  • Window1 - 未激活
  • Window2 - 未激活
  • Window3 - 活动

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

【问题讨论】:

    标签: c# windows hide screenshot


    【解决方案1】:

    如果没有大量工作,这是不可能的。打印屏幕功能只是将桌面 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
    

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

    【讨论】:

    • 想到了,但不是黑色部分。我不想要一个黑色的矩形,而是一个完整的图片
    • @Aivan:你想展示 Window3 的“背后”是什么?我想你会发现你所问的问题非常困难,如果可能的话。
    • 嗯,我已经想到了一个解决方案,但我正在寻找其他更简单的解决方案。这是我的看法。获取每个窗口及其位置的屏幕截图。获取任务栏截图。获取桌面截图。然后将它们组合成一张图片。排除不必要的窗口。
    • 对于每个窗口,您都需要它的屏幕截图及其在 z 顺序中的位置。您可能会在使用非矩形窗口或不是 100% 不透明的窗口时遇到一些困难。我将把它归为“极其困难”的类别。
    猜你喜欢
    • 1970-01-01
    • 2012-07-02
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    相关资源
    最近更新 更多