Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   BitBlt liefert nur weiß als Ergebnis (gelöst) (https://www.delphipraxis.net/186783-bitblt-liefert-nur-weiss-als-ergebnis-geloest.html)

Muhkopp 29. Sep 2015 13:39


BitBlt liefert nur weiß als Ergebnis (gelöst)
 
Hallo liebe Delphianer :)

Ich sitze gerade vor einem misteriösen Phänomen und hatte gehofft, dass jemand von euch damit schon Erfahrungen hat.

In einem Programm dass seit WinXP gepflegt wird, wird an einer Stelle ein Screenshot von einem parallel laufenden Programm gemacht und dann weiter verarbeitet.
Bisher lief das auch völlig reibungslos.

Der Versuch auf Windows 10 hingegen scheitert leider kläglich:
hier liefert der Kopierversuch ein korrekt großes, aber komplett weißes Bitmap zurück.

Der Verdacht liegt also nahe, dass es bei Windows 10 eine Besonderheit zu beachten gibt.

Der Vollständigkeit halber hier der entsprechende Aufruf:

Delphi-Quellcode:
BitBlt(bm.Canvas.Handle, 0, 0, bm.Width, bm.Height, GetWindowDC(myhwnd), 0, 0, SRCCOPY);
bm ist ein TBitmap in der richtigen Größe (natürlich auch mit angelegtem Speicher) und myhwnd ist ein (zumindest in den anderen Versionen) korrekt erzeugtes Handle.



NACHTRAG:
Der Fehler lag leider an meiner Unbedachtheit.
Ich hatte die Windows 10 Testumgebung auf einer virtuellen Maschine aufgesetzt, diese produziert den oben beschriebenen Fehler.
Unter einem "normalen" Windows 10 Rechner funktioniert alles wieder wie gewohnt.
Also merke: keine Testumgebungen mit VMWare erstellen :)

TiGü 29. Sep 2015 14:31

AW: BitBlt liefert nur weiß als Ergebnis (Windows 10)
 
Zitat:

Zitat von Muhkopp (Beitrag 1317215)
WinXP gepflegt wird, wird an einer Stelle ein Screenshot von einem parallel laufenden Programm gemacht und dann weiter verarbeitet.
Bisher lief das auch völlig reibungslos.

Bisher auch auf Windows Vista, 7, 8.0 und 8.1?

jbg 29. Sep 2015 14:45

AW: BitBlt liefert nur weiß als Ergebnis (Windows 10)
 
Ist das Window, das mit myhwnd angesprochen wird, auch vollständig visuell sichtbar? Teilweise sichtbar reicht nicht für BitBlt.

Wo ist eigentlich der zum GetWindowDC passende ReleaseDC aufruf? Oder ist das GDI-Handle Leak Absicht?

Muhkopp 29. Sep 2015 15:32

AW: BitBlt liefert nur weiß als Ergebnis (gelöst)
 
... manchmal steht man einfach auf dem schlauch...

ich wollte gerade zurück schreiben, als mir die "lösung" (oder besser: die ursache) durch den kopf gezuckt kam (siehe edit vom ersten post)

vielen dank trotzdem für die antworten :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz