Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi AeroGlass - Status erkennen + An-/Ausschalten (https://www.delphipraxis.net/118566-aeroglass-status-erkennen-ausschalten.html)

taaktaak 10. Aug 2008 14:10


AeroGlass - Status erkennen + An-/Ausschalten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin, Moin.
Bei meinem Programm rzMagnifier gibt es Probleme mit dem AeroGlassEffekt von Windows-VISTA. Im Augenblick bin ich der Auffassung, das dieser Effekt während des Scanvorgangs von rzMagnifier deaktiviert werden muss, da damit ja die tatsächlichen vom Programmierer für ein Programm verwendeten Farben ermittelt werden sollen und nicht irgendein von Windows daraus erzeugter "Farbmatsch".

Problem für mich ist derzeit, dass ich nicht unter VISTA entwickeln sondern nur testen kann. Das ist natürlich sehr umständlich. Gestern habe ich nun aus verschiedenen Quellen einige Informationen zusammengetragen und eine Klasse entwickelt, die die 3 im Titel benannten Funktionalitäten bereitstellt. Zunächst war ich an der Umsetzung von DwmIsCompositionEnabled() gescheitert, dank eines Beispiels von "extrem" (Vielen Dank! Das war wohl Gedankenübertragung!) ist wohl auch dieser Punkt gelöst.

Im Anhang die "Mini"-Klasse und ein kleines Testprogramm. Ich veröffentliche das hier mal aus zwei Gründen:
  • Schaut euch das bitte mal kurz an, ob das auch alles so ok ist. Es scheint zwar zu funktionieren, aber besser ist besser...
  • Vielleicht kann es ja auch noch ein Anderer mal gebrauchen.

// edit: Ahh, sorry, im Quelltext von test15_u1 ist unter uses noch "rzM_Base" aufgeführt, das wird nicht benötigt - bitte auskommentieren! Jetzt neue Version hochgeladen, dort schon auskommentiert!

lbccaleb 10. Aug 2008 15:20

Re: AeroGlass - Status erkennen + An-/Ausschalten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also bei mir, Windows Vista 32 bit scheint alles zu funktionieren, damit noch andere das Programm testen können und es nicht erst compilieren müssen hab ich das mal unten angehängt, hoffe das stört keinen...

taaktaak 10. Aug 2008 15:33

Re: AeroGlass - Status erkennen + An-/Ausschalten
 
Danke :cheers:
... und der Source der Klasse ist OK?

extrem 10. Aug 2008 16:24

Re: AeroGlass - Status erkennen + An-/Ausschalten
 
Zitat:

Zitat von taaktaak
Danke :cheers:
... und der Source der Klasse ist OK?

Jupp, von der für mich ungewohnten Codeformatierung mal abgesehen. Ansonsten funktioniert es auch bei mir unter Vista 32 bit.

Ob es nun der richtige Weg ist Aero bei deinem Tool dafür abzuschalten ist wieder eine andere Frage.

lbccaleb 10. Aug 2008 19:12

Re: AeroGlass - Status erkennen + An-/Ausschalten
 
Zitat:

Zitat von extrem
Zitat:

Zitat von taaktaak
Danke :cheers:
... und der Source der Klasse ist OK?

Jupp, von der für mich ungewohnten Codeformatierung mal abgesehen. Ansonsten funktioniert es auch bei mir unter Vista 32 bit.

Ob es nun der richtige Weg ist Aero bei deinem Tool dafür abzuschalten ist wieder eine andere Frage.

ja der meinung bin ich auch, da sollte es doch bestimmt noch ne andere möglichkeit geben, denn deswegen die neuen features der windows version brach zulegen, kann nicht der richtige weg sein, schon gar nicht für spätere version von nwindows!!

taaktaak 10. Aug 2008 20:22

Re: AeroGlass - Status erkennen + An-/Ausschalten
 
Tja, in diesem Punkt bin ich ja auch noch unsicher. Aber (ich zitiere mich mal selber):

Zitat:

Im Augenblick bin ich der Auffassung, das dieser Effekt während des Scanvorgangs von rzMagnifier deaktiviert werden muss, da damit ja die tatsächlichen vom Programmierer für ein Programm verwendeten Farben ermittelt werden sollen und nicht irgendein von Windows daraus erzeugter "Farbmatsch".
Ist das denn falsch gedacht? Im Umkehrschluß: Wenn es gelingt, die aktuell von Windows dargestellten Farben in die Anzeige zu scannen und diesen Farbwert zu bestimmen. Dann ist dieser Farbwert doch im Sinne der eigentlichen Aufgabe wertlos?! Ich erhalte dann nicht die ursprüngliche Farbe, die der Programmierer des fremden Programms bestimmt hat, sondern die AeroGlass-Farbe. Und die will ich doch gar nicht wissen.

OregonGhost 11. Aug 2008 11:09

Re: AeroGlass - Status erkennen + An-/Ausschalten
 
Wenn du die Farbe an einer Stelle ausliest, auf der der Glass-Effekt zu sehen ist, dann hat der Programmierer das bewusst für diesen Bereich aktiviert. Glass wirkt sich nur auf von Windows gezeichnete Elemente (sprich, Titelleiste und Fensterrahmen) aus und auf die Bereiche, die explizit dafür freigegeben wurden. Der Inhalt eines normalen Fenster ist auch mit Glass in der Farbe, die da sein sollte.

taaktaak 11. Aug 2008 13:44

Re: AeroGlass - Status erkennen + An-/Ausschalten
 
Hmmm, dieser Hinweis bringt mein Denkmodell ins Wanken. Werde das ganze zunächst zurückstellen bis ich direkt unter VISTA entwickeln kann. Danke!

himitsu 11. Aug 2008 14:14

Re: AeroGlass - Status erkennen + An-/Ausschalten
 
Dieser Effekt wird doch erst von diesem DesktopManager erstellt/dargestellt?

da wäre es doch "schöner", wenn man von dem das Originalbild abfragen könnte (falls man die Originalfarben möchte) :gruebel:


PS: der Glass-Effekt ist ja durchsichtig und somit hätte man nicht nur die Farbe des gewünschten Fensters, sondern auch mit die der dahinterligenden Dinge (gemischt)?

bei der Bildschirmlupe würde ich zwar weiterhin den Glass-Effekt nutzen (wenn er vorhanden ist), aber beim Colorpicker wär doch die Farbe des gewünschten Fensterpünktchens wichtig und nicht 'ne Mischung mit wer weiß mit was noch.

lbccaleb 11. Aug 2008 16:37

Re: AeroGlass - Status erkennen + An-/Ausschalten
 
Zitat:

Zitat von himitsu
bei der Bildschirmlupe würde ich zwar weiterhin den Glass-Effekt nutzen (wenn er vorhanden ist), aber beim Colorpicker wär doch die Farbe des gewünschten Fensterpünktchens wichtig und nicht 'ne Mischung mit wer weiß mit was noch.

Aber wenn der User auf den Pixel klickt, und von dem die Farbe haben möchte, dann klickt er ja nicht drauf um ne andere (als die angezeigte) Farbe zu bekommen. Also würde ich den Aero-Effekt mit berücksichtigen in der Farbauswahl...


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:08 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