Abbiamo bisogno di uno screenshot della nostra app per un test unitario. CaptureScreen()
e CopyFromScreen()
in qualche modo ignorano l'app e restituiscono le immagini di un desktop vuoto. Così abbiamo scritto questo per simulare una sequenza di tasti PrtScn
:Il tasto "PrtScn" automatizzato si comporta come "Alt + PrtScrn"
public static Bitmap GetAltScreenshot()
{
Clipboard.Clear();
SendKeys.SendWait("{PRTSC}");
while (!Clipboard.ContainsImage())
{
Thread.Sleep(500);
}
return new Bitmap(Clipboard.GetImage());
}
Alt
non fa parte della sequenza di tasti, quindi questo dovrebbe restituire una bitmap di intero schermo. Eppure in qualche modo questo frammento restituisce solo la finestra focalizzata. Che va bene, che risolve il nostro problema - ma non capiamo come.
Perché questo restituisce una ripresa della finestra focalizzata, anziché dell'intero monitor?
Si dovrebbe guardare: http://stackoverflow.com/questions/5049122/how-to-capture-the-screen-shot-using-net –
@GeorgeJohnston Credetemi, abbiamo provato a utilizzare 'g.CopyFromScreen' prima, così come ogni altro metodo di acquisizione che potremmo trovare. Tutti hanno funzionato bene sulla mia macchina, ma hanno dato risultati strani su altre macchine all'interno dell'azienda. – 4444
Potrebbe essere possibile che la classe SendKeys interpreti semplicemente la stringa di tasti "{PRTSC}" per indicare la combinazione di tasti Alt + PrtScn? Inoltre, potresti essere in grado di impostare manualmente la messa a fuoco in modo che sia l'intero schermo? [collegamento] (http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.sendwait.aspx) alla prima nota. –