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不是击键的一部分,所以这应该返回整个屏幕的位图.然而,不知何故,这个片段只返回聚焦窗口.哪个好,这解决了我们的问题 - 但我们不明白如何.
为什么这会只返回聚焦窗口而不是整个显示器的镜头?
实际上有一个"原因",请转到MSDN Library文章,该文章记录了您可以使用的关键缩写.注意PRINT SCREEN的条目:
{PRTSC}(保留供将来使用)
这是一种有点笨拙的方式说"我们知道它不起作用,也许有一天会解决".那天还没到.所以你可能正在测试这个键的失败模式,实际上就像它的工作方式一样.这当然不健康,他们实际上可能会在某一天解决问题并破坏您的计划.
请注意有关<appSettings>可以添加到.config文件的条目的注释,在同一MSDN页面下方.我怀疑,但不知道事实,SendInput方法更可靠.