AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi DwmGetColorizationColor benutzen
Thema durchsuchen
Ansicht
Themen-Optionen

DwmGetColorizationColor benutzen

Ein Thema von Culxxaw · begonnen am 4. Feb 2010 · letzter Beitrag vom 5. Feb 2010
Antwort Antwort
Culxxaw

Registriert seit: 21. Okt 2008
40 Beiträge
 
#1

DwmGetColorizationColor benutzen

  Alt 4. Feb 2010, 20:36
Hallo,

würde gerne die Funktion DwmGetColorizationColor benutzen. Nutze die DWMApi-Unit, die hier im Forum zu finden ist.

Auszug:
Delphi-Quellcode:
...
  TDwmGetColorizationColor = function(out pcrColorization: PDWORD; out pfOpaqueBlend: PBOOL): HRESULT; stdcall;
...
var
  DwmGetColorizationColor: TDwmGetColorizationColor;
...
  function DWM_GetColorizationColor(var pcrColorization: DWORD; var pfOpaqueBlend: BOOL): HRESULT;
Versuche die Funtion bisher so zu verwenden (das Ausgabeformat für farbe soll laut msdn "0xAARRGGBB" sein):
Delphi-Quellcode:
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);
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.

Danke im Voraus
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#2

Re: DwmGetColorizationColor benutzen

  Alt 4. Feb 2010, 21:58
Setze einfach @ vor die Variablen Farbe und blend, damit die Werte übergeben und nicht die Werte als Zeiger erkannt werden.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Culxxaw

Registriert seit: 21. Okt 2008
40 Beiträge
 
#3

Re: DwmGetColorizationColor benutzen

  Alt 4. Feb 2010, 23:36
Ersteinmal danke für die schnelle Antwort.
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...
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#4

Re: DwmGetColorizationColor benutzen

  Alt 5. Feb 2010, 11:18
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.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#5

Re: DwmGetColorizationColor benutzen

  Alt 5. Feb 2010, 11:19
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;
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Culxxaw

Registriert seit: 21. Okt 2008
40 Beiträge
 
#6

Re: DwmGetColorizationColor benutzen

  Alt 5. Feb 2010, 16:58
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 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