DwmGetColorizationColor benutzen
Hallo,
würde gerne die Funktion DwmGetColorizationColor benutzen. Nutze die DWMApi-Unit, die hier im Forum zu finden ist. Auszug:
Delphi-Quellcode:
Versuche die Funtion bisher so zu verwenden (das Ausgabeformat für farbe soll laut msdn "0xAARRGGBB" sein):
...
TDwmGetColorizationColor = function(out pcrColorization: PDWORD; out pfOpaqueBlend: PBOOL): HRESULT; stdcall; ... var DwmGetColorizationColor: TDwmGetColorizationColor; ... function DWM_GetColorizationColor(var pcrColorization: DWORD; var pfOpaqueBlend: BOOL): HRESULT;
Delphi-Quellcode:
Dort kommt aber nur Unsinn heraus. Wollte nun fragen, ob jemand weiß, wie ich die Funktion richtig benutzen muss bzw. wie ich den dword-wert richtig umwandeln kann.
var
blend: bool; farbe : dword; begin dwmapi.DwmGetColorizationColor(PDWORD(farbe),PBOOL(blend)); a := copy(IntToHex((integer(farbe)),8),1,2); r := copy(IntToHex((integer(farbe)),8),3,2); g := copy(IntToHex((integer(farbe)),8),5,2); b := copy(IntToHex((integer(farbe)),8),7,2); Danke im Voraus :wink: |
Re: DwmGetColorizationColor benutzen
Setze einfach @ vor die Variablen Farbe und blend, damit die Werte übergeben und nicht die Werte als Zeiger erkannt werden.
|
Re: DwmGetColorizationColor benutzen
Ersteinmal danke für die schnelle Antwort. :thumb:
Doch das behebt das Problem leider nicht. Könnte es sein, dass die Umwandlung mit "Integer()" nicht zulässig ist oder etwas in der Art. Oder habe ich noch einen Fehler bezüglich der Pointer eingebaut... |
Re: DwmGetColorizationColor benutzen
So, jetzt sehe ich erst, dass du var und Pointer gleichzeitig benutzt. D.h. du hast einen doppelten Zeiger. Also lass den Pointer (PDWORD und PBOOL) bei der Funktionsdeklaration weg und arbeite mit normalem DWORD und BOOL statt deren Zeiger (@). Denn var und out machen aus C Typenzeigern einfach nur noch den Typ.
Außerdem prüfe mit OleCheck(<fnct>); , ob der Aufruf erfolgreich war (unit ComObj). Die Umrechnung mit Copy ist zudem auch net so glücklich. |
Re: DwmGetColorizationColor benutzen
deine Auswertung ist falsch :
Delphi-Quellcode:
A := (farbe and $FF000000) shr 24; R := (farbe and $FF); G := (farbe and $FF00) shr 8; B := (farbe and $FF0000) shr 16; |
Re: DwmGetColorizationColor benutzen
Danke für eure Hilfe Leute! :)
Ich hab das Ergebnis mal als Beitrag zusammengefasst: Vista/Win7 Aero Farbe auslesen Vielleicht nützt das ja noch dem ein oder anderem. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:15 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