Нам нужен скриншот нашего приложения для модульного теста. CaptureScreen()
и CopyFromScreen()
каким-то образом игнорируют приложение и возвращают фотографии пустого рабочего стола. Таким образом, мы написали это фальсифицировать PrtScn
нажатие клавиши:Автоматическое нажатие клавиши «PrtScn» действует как «Alt + PrtScrn»
public static Bitmap GetAltScreenshot()
{
Clipboard.Clear();
SendKeys.SendWait("{PRTSC}");
while (!Clipboard.ContainsImage())
{
Thread.Sleep(500);
}
return new Bitmap(Clipboard.GetImage());
}
Alt
не является частью нажатием клавиши, так что это должно возвращать растровое изображение весь экран. Однако каким-то образом этот фрагмент возвращает только сфокусированное окно. Это хорошо, что решает нашу проблему, но мы не понимаем, как это сделать.
Почему это возвращает снимок только сфокусированного окна, а не всего монитора?
Вы должны посмотреть: http://stackoverflow.com/questions/5049122/how-to-capture-the-screen-shot-using-net –
@GeorgeJohnston Поверьте, мы пробовали использовать 'g.CopyFromScreen' раньше, а также любой другой метод захвата, который мы могли бы найти. Все они отлично работали на моей машине, но дали отличные результаты на других машинах внутри компании. – 4444
Может ли быть так, что класс SendKeys просто интерпретирует ключевую строку «{PRTSC}» для обозначения комбинации клавиш Alt + PrtScn? Кроме того, вы могли бы просто вручную установить фокус в целом screeen? [link] (http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.sendwait.aspx) в первой ноте. –