我们需要我们的应用程序的屏幕截图进行单元测试。 CaptureScreen()
和CopyFromScreen()
以某种方式忽略应用并返回空桌面的图片。所以我们写了这个假冒PrtScn
击键:
public static Bitmap GetAltScreenshot()
{
Clipboard.Clear();
SendKeys.SendWait("{PRTSC}");
while (!Clipboard.ContainsImage())
{
Thread.Sleep(500);
}
return new Bitmap(Clipboard.GetImage());
}
Alt
不是击键的一部分,因此这应该返回整个屏幕的位图。然而,不知何故,这个片段只返回聚焦窗口。哪个好,这解决了我们的问题 - 但我们不明白如何。
为什么这会只返回聚焦窗口的镜头,而不是整个显示器?
答案 0 :(得分:5)
实际上有一个“原因”,转向记录您可以使用的关键缩写的MSDN Library article。请注意PRINT SCREEN的条目:
{PRTSC}(保留供将来使用)
这是一种有点笨拙的说法,“我们知道它不起作用,也许有一天会修复”。那天还没到。所以你可能正在测试这个密钥的失败模式,实际上喜欢它的工作方式。这当然不健康,他们实际上可能会在某一天解决问题并破坏您的计划。
请注意有关您可以添加到.config文件的<appSettings>
条目的注释,在同一MSDN页面下方。我怀疑,但不知道一个事实,SendInput方法更可靠。