自动"PrtScn"按键的行为类似于"Alt + PrtScrn"

444*_*444 8 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());
}
Run Code Online (Sandbox Code Playgroud)

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

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

Han*_*ant 6

实际上有一个"原因",请转到MSDN Library文章,该文章记录了您可以使用的关键缩写.注意PRINT SCREEN的条目:

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

这是一种有点笨拙的方式说"我们知道它不起作用,也许有一天会解决".那天还没到.所以你可能正在测试这个键的失败模式,实际上就像它的工作方式一样.这当然不健康,他们实际上可能会在某一天解决问题并破坏您的计划.

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