Windows 7 GetWindowDC von maximiertem Fenster



  • Hallo,

    seit Windows 7 gibt es ja diese praktische Vorschau von geöffneten Programm bei der Taskleiste. Aber bei maximierten 3D Anwendungen wird dort gerne mal nur ein schwarzer Bildschirm als Vorschau gezeigt.

    Mein Programm holt sich per FindWindow das HWND des Programms und danach mit GetWindowDC den Device Context dieses Fensters. Bei Win7 funktioniert das nun bei 3D Anwendungen im Fullscreen nicht mehr, da Windows scheinbar das DC abzweigt (?). Wenn ich per Rectangle(hdc,100,100,50,50); ein Rechteck auf das Fenster malen möchte sehe ich nichts davon in der Anwendung, dafür ist mein Rechteck aber in dem Vorschaubildchen von der Startleiste?! Gibt es eine Möglichkeit irgendwie das richtige DC zu bekommen?

    hier ein Beispielbild:
    http://www.abload.de/img/win7fullscreenbug156d.jpg

    greetz KN4CK3R



  • KN4CK3R schrieb:

    Gibt es eine Möglichkeit irgendwie das richtige DC zu bekommen?

    Da gibt's auf jeden Fall keine einfache WinAPI-Funktion für. Du willst einen direkten DirectX/OpenGL Output abfangen, das ist afaik ziemlich schwierig.



  • nö will ich nicht, ich will einfach auf das Fenster zeichnen. Bei Windows < 7 ist das auch problemlos möglich, aber ab Windows 7 scheinbar nur noch im Windowmode. Gibt es sowas wie eine EnumDeviceContext Funktion, die einem die möglichen DCs eines Fenster ausflistet?

    greetz KN4CK3R


  • Mod

    KN4CK3R schrieb:

    Gibt es sowas wie eine EnumDeviceContext Funktion, die einem die möglichen DCs eines Fenster ausflistet?

    Wie denn so etwas? DCs sind temporäre Objekte die bei Bedarf erzeugt werden.
    Die sind nicht da!

    Du verwechselst das mit dem Bildschirm-Image das irgendwo in der Hardware steckt.



  • ok, gut zu wissen. Aber wie komme ich in dem Fall dann an das eigentliche Fenster, wenn GetWindowDC mit FindWindow das falsche, kleine Vorschaufenster liefert? Ich hab schon mit Spy++ geschaut, ob das eventuell ein Childwindow ist, aber es sieht nicht so aus.

    greetz KN4CK3R


  • Mod

    Du musst aufpassen. Windows 7 erzeugt auch Ghost Fenster. Schau Dir das Ganze erstmal im Spy++ an.

    Evtl. komst Du unter Windows 7 gar nicht an diesen DC, denn er geht Dich auch in keiner Weise was an, er gehört nämlich zu einem anderen Prozess.

    Sollte mich also nicht wundern wenn Windows 7 solche "Hacks" nicht mag, oder das solche Hakcs nicht mehr möglich sind.


Anmelden zum Antworten