自动化';PrtScn';击键的行为类似于';Alt+PrtScrn';
本文关键字:类似于 Alt+PrtScrn PrtScn 自动化 | 更新日期: 2023-09-27 18:24:02
我们需要一个单元测试应用程序的屏幕截图。CaptureScreen()
和CopyFromScreen()
不知何故忽略了该应用程序并返回空桌面的图片。所以我们写这个是为了伪造PrtScn
击键:
public static Bitmap GetAltScreenshot()
{
Clipboard.Clear();
SendKeys.SendWait("{PRTSC}");
while (!Clipboard.ContainsImage())
{
Thread.Sleep(500);
}
return new Bitmap(Clipboard.GetImage());
}
Alt
不是击键的一部分,因此它应该返回整个屏幕的位图。然而,不知何故,这个片段只返回了聚焦窗口。这很好,这解决了我们的问题,但我们不明白如何解决。
为什么只返回聚焦窗口的快照,而不是整个监视器的快照?
事实上有一个"原因",请参阅MSDN Library的文章,该文章记录了您可以使用的关键缩写。注意"打印屏幕:"的输入
{PRCSC}(保留以备将来使用)
这是一种有点笨拙的说法:"我们知道它不起作用,也许有一天会解决的"。那一天还没有到来。因此,您可能正在测试此密钥的故障模式,并且实际上类似的工作方式。这当然是不健康的,他们可能会在某一天解决问题并破坏你的程序。
请注意可以添加到.config文件中的关于<appSettings>
条目的注释,位于同一MSDN页面的下方。我怀疑SendInput方法更可靠,但事实上我不知道。