2010-08-09 7 views
6

J'ai le code C# suivant, que j'utilise pour capturer une capture d'écran dans une session de bureau à distance (RDP). Cela fonctionne correctement lorsque la session est active, mais échoue avec une exception de handle non valide si je réduit la session.Capture des captures d'écran d'un poste de travail distant réduit

Y a-t-il un moyen de faire en sorte que cela fonctionne, ou l'écran est-il "parti" quand la session est réduite?

string filename = @"C:\Snap.png"; 
Size bitmapSize = new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); 
using (Bitmap bitmap = new Bitmap(bitmapSize.Width, bitmapSize.Height, PixelFormat.Format24bppRgb)) 
using (Graphics graphics = Graphics.FromImage(bitmap)) 
{ 
    graphics.CopyFromScreen(// Exception thrown here 
     new Point(0, 0), 
     new Point(0, 0), 
     bitmapSize); 
    bitmap.Save(filename, ImageFormat.Png); 
} 
+0

Le programme s'exécute-t-il sur la machine distante ou sur la machine locale? – siride

+0

Il fonctionne sur la machine distante. – ngoozeff

Répondre

4

Vous devez temporairement restaurer la fenêtre, la capturer et la réduire de nouveau. This link shows how to do it silently

+0

Cela fonctionne si je prends la capture d'écran sur le client. Je préférerais quelque chose qui fonctionne dans la session à distance, mais je vais aller avec cela si rien d'autre ne se présente. – ngoozeff