Announcement

Collapse
No announcement yet.

Screenshot zeigt keine Fenster mit Transparenz

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Screenshot zeigt keine Fenster mit Transparenz

    Hallo,

    ich wollte einen kleinen OpenGL-Bildschirmschoner programmieren und dabei als Textur u.a. einen Screenshot verwenden (unter Windows). Darum habe ich zunächst erst mal ein kleines Programm geschrieben, dass einfach nur einen Screenshot als BMP-Datei speichert. Dazu habe ich auch einiges im Internet gefunden...

    Das Problem dabei ist nur, dass bei mir Fenster, die Transparenz verwenden (bei mir z.B. WinAMP) nicht auf dem Screenshot zu sehen sind!

    Ich habe dazu mittlerweile fünf verschiedene Varianten ausprobiert (4x verschiedene Varianten mit dem DC und 1x Simulation des Tastendrucks auf DRUCK mit SendInput und anschließendem Auslesen der Zwischenablage), immer das gleiche Ergebnis.

    Was mich besonders wundert, ist dass wenn ich die selben Daten aus der Zwischenablage in MS Paint einfüge, sind die Fenster zu sehen!

    Hat da jemand Ahnung von und kann was zu sagen?

    Vielen Dank schon mal


    Hier noch ein paar Code-Schnipsel aus der Funktion (wenn die gesamte Funktion gewünscht ist, einfach posten):
    PHP Code:
    void Screenshot(LPCSTR filename) {
    // 

    HDC hdc GetDC(NULL);
    (...) 
    // Breite  w und Höhe h ermitteltn
    HDC hdcmem CreateCompatibleDC(hdc);
    HBITMAP hbmp CreateCompatibleBitmap(hdcwh);
    HGDIOBJ hOld SelectObject(hdcmemhbmp);

    BitBlt(memDC00whhdc00SCRCOPY);

    BITMAPINFO bmi;
    (...) 
    // Bilddaten ermitteln

    BYTE *pbBits = new BYTE[bmi.bmiHeader.biSizeImage];
    GetDIBits(memDChbm0bmi.bmiHeader.biHeightpbBits, &bmiDIB_RGB_COLORS);

    (...) 
    // BMP speichern unter filename

    (...) // aufräumen



Working...
X