[C#] Screenshots und nicht aktualisierte Windows

Barzille

Grünschnabel
Moin,
ich habe ein Problem mit dem Screenshotcode von http://www.developerfusion.co.uk/show/4630/, der hier schon in einem anderen Thread erwähnt wurde. Ich kann ohne Probleme Screenshots von allen möglichen Fenstern erstellen, nur hapert es beim Screenshot von einem Computerspiel, das im Fenstermodus läuft. Der erste Shot klappt noch, danach bekomme ich aber bei jedem weiteren Versuch immer wieder das gleiche alte Bild. Erst wenn ich im Spiel von Fenster auf Vollbildmodus und zurück schalte, erhalte ich ein neues Bild. Mein Code sieht vereinfacht so aus:

Code:
ScreenCapture sc = newScreenCapture();
...
#Buttonevent
while (this.Handle == newIntPtr(GetForegroundWindow()))
{
Thread.Sleep(500);
} 
IntPtr handle = newIntPtr(GetForegroundWindow());
Screenshot = sc.CaptureWindow(handle); 
bm = newBitmap(Screenshot);
graph = Graphics.FromImage(bm); //benötigt, um auf dem Bild zu zeichnen
 
AnalyseBild.Image = bm;
AnalyseBild.Size = bm.Size;
#Ende Buttonevent

Gibt es bei OpenGL Fenstern ein bestimmtes Kommando zum Refresh oder ein ähnliches Vorgehen?

Gruß Maik
 
So, ich habe mittlerweile rausbekommen, dass ich screenshots von direct3D Fenstern anders machen muss, und zwar folgendermaßen:

PHP:
Surface backbuffer = device.GetBackBuffer(0, 0, BackBufferType.Mono);
SurfaceLoader.Save("Screenshot.bmp", ImageFileFormat.Bmp, backbuffer);
backbuffer.Dispose();

Mein Problem liegt aber nun darin, dass ich nicht weiß, wie ich vom Handle (IntPtr) des Direct3D Fensters zum device komme. Hat da jemand Rat für mich?
 
Zurück