Ein Screenshot von Allem Machen ( OpenGL / DirextX und Windows )



  • Hallo
    Ich bin schon n geraume Zeit auf der Suche nach einer Lösung wie ich Programatisch eine Screenshot vom Angezeigten Bildschirm Inhalt mache.
    Jetzt werden die meinsten denken mit der Taste "Druck", Aber so mein ich das nicht daher muss ich wohl etwas weiter ausholen.

    Ich möchter in irgendeiner Form ( am besten RGB ) Zugriff über C++ auf genau das Bild haben was der Benutzer auf seinen Bildschirm sieht. Egal was grade gezeigt wird, also egal ob grade eine Windowsanwedung, ein Spiel in DirectX oder ein Film in openGL läuft.
    Ich versuche es schon über verschiedene wege aber jedesmal scheitter ich daran das ich immer nur das sehe, mit dem ich grade arbeite. Also wenn ich mit GDI+ arbeite Sehe ich keine DirectX oder OpenGL anwendung. Ist ja auch klar weil die verarbeitung auf der Grafikkarte passiert. Aber wenn ich mit z.B. OpenGl arbeite bekomme ich keine Daten von den Windowsanwendungen. usw.
    Mir ist es egal was auf dem Bildschirm läuft ich will nur das Bild haben um diese weiter zu verwenden.

    Kennt jemand eine Lösung? oder hat jemand einen ansatz wie ich an die Daten komme?

    Nebei ist mir es auch egal wie die Daten abgespeichert werden sollen. Weil ich will die eigentlich gar nett auf die Festplatte speichern, mir würde eine speicherzugriff reichen.

    mfg
    MrBabaHoho



  • GetDC mit NULL



  • Wird nicht zwangsläufig helfen, da Hardwaresurfaces wie die von DirectX damit nicht erfasst werden. Korrigiert mich (mit Quelle), wenn das nicht stimmt.



  • Ich habe das schon so in Erinnerung, dass man damit alles abgreifen konnte. Die "Hardwaresurfaces", werden ja trotzdem auf den Bildschirm geblittet.

    Oder meinst du diese ominösen DirectDraw Overlays, die nie irgendjemand verwendet hat?

    Falls alle Stricke reißen kann man natürlich noch DDraw benutzen und über die primäre Surface eine Kopie des VRAM erstellen lassen.



  • GNU-Fan schrieb:

    GetDC mit NULL

    Hat das schon mal einer unter Windows Vista versucht?
    (Ich bekomme hiermit unter Vista überhaupt kein Bild mehr, unter XP funktionierte es perfekt)



  • also GetDC geht auch mit Direct3D. aber wahrscheinlich nicht mit overlays, das braucht aber wohl auch fast keiner.
    was mit vista ist weiss ich auch nicht.


Anmelden zum Antworten