Ho l'impressione che stiate scattando per scattare una foto del desktop reale (con sfondo e icone) e nient'altro.
1) chiamata ToggleDesktop() in Shell32 utilizzando COM
2) Utilizzare Graphics.CopyFromScreen per copiare l'area del desktop corrente
3) Chiamare ToggleDesktop() per ripristinare lo stato precedente del desktop
Edit: Sì, chiamando MinimizeAll() è belligerante.
Ecco una versione aggiornata che ho sbattuto insieme:
/// <summary>
/// Minimizes all running applications and captures desktop as image
/// Note: Requires reference to "Microsoft Shell Controls and Automation"
/// </summary>
/// <returns>Image of desktop</returns>
private Image CaptureDesktopImage() {
//May want to play around with the delay.
TimeSpan ToggleDesktopDelay = new TimeSpan(0, 0, 0, 0, 150);
Shell32.ShellClass ShellReference = null;
Bitmap WorkingImage = null;
Graphics WorkingGraphics = null;
Rectangle TargetArea = Screen.PrimaryScreen.WorkingArea;
Image ReturnImage = null;
try
{
ShellReference = new Shell32.ShellClass();
ShellReference.ToggleDesktop();
System.Threading.Thread.Sleep(ToggleDesktopDelay);
WorkingImage = new Bitmap(TargetArea.Width,
TargetArea.Height);
WorkingGraphics = Graphics.FromImage(WorkingImage);
WorkingGraphics.CopyFromScreen(TargetArea.X, TargetArea.X, 0, 0, TargetArea.Size);
System.Threading.Thread.Sleep(ToggleDesktopDelay);
ShellReference.ToggleDesktop();
ReturnImage = (Image)WorkingImage.Clone();
}
catch
{
System.Diagnostics.Debugger.Break();
//...
}
finally
{
WorkingGraphics.Dispose();
WorkingImage.Dispose();
}
return ReturnImage;
}
Regolare a piacere per molteplici scenari di monitoraggio (anche se suona come questo dovrebbe funzionare bene per la vostra applicazione).
fonte
2009-05-19 04:12:06
Posso farlo se la mia domanda è a fuoco? Non catturerà la mia finestra dell'applicazione (e altri) se sono di fronte al desktop? – Damovisa
Ho provato 'GetDesktopWindow' ma cattura le finestre che si trovano di fronte al desktop –
qualsiasi soluzione finale con l'esempio di codice sorgente completo a lavorare su di esso? – Kiquenet