自动“PrtScn”按键的行为类似于“Alt + PrtScn”

时间:2013-07-19 18:51:12

标签: c# automation screenshot sendkeys

我们需要我们的应用程序的屏幕截图进行单元测试。 CaptureScreen()CopyFromScreen()以某种方式忽略应用并返回空桌面的图片。所以我们写了这个假冒PrtScn击键:

public static Bitmap GetAltScreenshot()
{
    Clipboard.Clear();
    SendKeys.SendWait("{PRTSC}");
    while (!Clipboard.ContainsImage())
    {
        Thread.Sleep(500);
    }
    return new Bitmap(Clipboard.GetImage());
}

Alt不是击键的一部分,因此这应该返回整个屏幕的位图。然而,不知何故,这个片段只返回聚焦窗口。哪个好,这解决了我们的问题 - 但我们不明白如何。

为什么这会只返回聚焦窗口的镜头,而不是整个显示器?

1 个答案:

答案 0 :(得分:5)

实际上有一个“原因”,转向记录您可以使用的关键缩写的MSDN Library article。请注意PRINT SCREEN的条目:

  

{PRTSC}(保留供将来使用)

这是一种有点笨拙的说法,“我们知道它不起作用,也许有一天会修复”。那天还没到。所以你可能正在测试这个密钥的失败模式,实际上喜欢它的工作方式。这当然不健康,他们实际上可能会在某一天解决问题并破坏您的计划。

请注意有关您可以添加到.config文件的<appSettings>条目的注释,在同一MSDN页面下方。我怀疑,但不知道一个事实,SendInput方法更可靠。