Screenshot - Neues Fenster erscheint nicht
-
Hallo,
ich erstelle mit dem unten stehenden Code jede Sekunde ein Screenshot, um Objekte auf dem Bildschirm zu erkennen. Im Normalfall läuft das auch alles spitze aber bei einem Programm habe ich das Problem, dass es nachdem ich es das erste Mal gestartet habe anklicken muss, bevor es auf dem Screenshot erscheint.
Sprich beim ersten Start dauert es meistens etwas länger, bevor das Fenster des Programms auf geht und dann erscheint es erst aufn Screenshot, nachdem ich das Fenster angeklickt habe.
Was mache ich falsch?
Denn eigentlich sollte ich ja mit GetDC(0) den kompletten Bildschirm als Screenshot bekommen, sprich das, was ich gerade auch sehe und nicht was auch einmal den Fokus gehabt haben muss...
...oder?RGBQUAD* memory=NULL; HBITMAP bitmap=NULL; HDC memDC=NULL; HDC hdcDesktop = GetDC(0); BITMAPINFO info = {0}; info.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); info.bmiHeader.biWidth = dx; info.bmiHeader.biHeight = dy; info.bmiHeader.biPlanes = 1; info.bmiHeader.biBitCount = 32; // 32:RGBQUAD; 24:RGBTRIPLE bitmap = CreateDIBSection(hdcDesktop, &info, DIB_RGB_COLORS, (void**)&memory, 0, 0); memDC = CreateCompatibleDC(hdcDesktop); SelectObject(memDC, bitmap); BitBlt(memDC, 0, 0, dx, dy, hdcDesktop, 0, 0, SRCCOPY); ReleaseDC(0, hdcDesktop); DeleteDC(memDC); DeleteObject(bitmap);
-
Versuch mal, ob es mit
GetWindowDC(0);besser funktioniert.
-
Danke aber das Ergebnis ist leider das Gleiche. Mein Programm läuft, das andere starte ich zum ersten Mal. Nach 1-2 Sekunden sehe ich das Fenster aber auf dem Screenshot erscheint es erst dann, wenn ich das Fenster angeklickt habe.
-
Ich verwende zum Screenshotspeichern die Funktion von "geeky" aus diesem Beitrag: (etwas runterscrollen, auf der verlinkten Seite)
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39400.html
Bei mir sind eindeutig alle Fenster zu sehen, auch die, die nicht den Fokus haben. (Windows 7 Professional)
Aber ich habe keinen großen Unterschied zu deinem Programm entdecken können.Unter Windows Vista funktioniert es nicht

Du kannst ja mal testen, ob das Problem auch mit dem Code von "geeky" auftritt.
Wenn ja fällt mir als Ursache nur das Betriebssystem oder zu wenig Wartezeit nach dem Erstellen des Fensters ein.(Oder es ist ein Programm, welches das komplette Fenster wie ein Videoplayer komplett ins RAM der Grafikkarte schreibt. Aber dann müßte dort zumindest ein schwarzes Rechteck zu sehen sein)