procedure TestAlphaBlend;
var
hHandle: THandle;
ExStyle: DWORD;
bResSet: Boolean;
bResGet: Boolean;
AlphaValue: Byte;
TranspColor: COLORREF;
Flags: DWORD;
Error: Cardinal;
s:
String;
begin
s := '
nix';
AlphaValue := 0;
Flags := 0;
hHandle := FindWindowEx(0, 0, '
Notepad',
nil);
//Fensterhandle von einem Notepad
if ((hHandle <> INVALID_HANDLE_VALUE)
and //gültiges Handle
(IsWindowVisible(hHandle)))
then //Fenster sichtbar
begin
s := '
';
ExStyle := GetWindowLong(hHandle, GWL_EXSTYLE);
//Extended Style holen
if ((ExStyle
and WS_EX_LAYERED) = 0)
then //wenn kein Layered Fenster
SetWindowLong(hHandle, GWL_EXSTYLE, ExStyle
or WS_EX_LAYERED);
//dann Layered setzen
//funktioniert
bResSet := SetLayeredWindowAttributes(hHandle, 0, 200, LWA_ALPHA);
//AlphaBlend mit Wert 200 setzen
Error := GetLastError;
if (bResSet
and (Error = 0))
then
s := s + '
SetLayeredWindowAttributes erfolgreich' + #10#13
else
s := s + '
SetLayeredWindowAttributes nicht erfolgreich' + #10#13;
//kommt nie vor
s := s + '
SetLayeredWindowAttributes GetLastError = ' + IntToStr(Error) + #10#13;
//gemerkten Fehler
//funktioniert
bResGet := GetLayeredWindowAttributes(hHandle, TranspColor, AlphaValue, Flags);
//AlphaBlend ermitteln
Error := GetLastError;
if (bResGet
and (Error = 0))
then
begin
s := s + '
GetLayeredWindowAttributes erfolgreich' + #10#13;
if ((Flags
and LWA_ALPHA) > 0)
then //ob AlphaBlend gesetzt ist
s := s + '
AlphaBlend = True' + #10#13
else
s := s + '
AlphaBlend = False' + #10#13
end
else
s := s + '
GetLayeredWindowAttributes nicht erfolgreich' + #10#13;
s := s + '
GetLayeredWindowAttributes GetLastError = ' + IntToStr(Error) + #10#13;
//gemerkten Fehler
ShowWindow(hHandle, SW_MINIMIZE);
//Minimieren
ShowWindow(hHandle, SW_RESTORE);
//Wiederherstellen
//funktioniert nicht mehr
bResGet := GetLayeredWindowAttributes(hHandle, TranspColor, AlphaValue, Flags);
//AlphaBlend ermitteln
Error := GetLastError;
if (bResGet
and (Error = 0))
then
begin
s := s + '
GetLayeredWindowAttributes erfolgreich' + #10#13;
if ((Flags
and LWA_ALPHA) > 0)
then //ob AlphaBlend gesetzt ist
s := s + '
AlphaBlend = True' + #10#13
else
s := s + '
AlphaBlend = False' + #10#13
end
else
s := s + '
GetLayeredWindowAttributes nicht erfolgreich' + #10#13;
s := s + '
GetLayeredWindowAttributes GetLastError = ' + IntToStr(Error) + #10#13;
//gemerkten Fehler
end;
ShowMessage(s);
end;