![]() |
Fullscreen anderer Programme abfragen/erkennen
Hallo liebe DPler,
ich versuche mich gerade an einer Methode, die herausfinden soll, ob andere Programme im Moment im Fullscreen-Modus laufen. Sinn der Geschichte: Ich benutze in einem Programm regelmäßig (Timer) BringtoFront, jedoch ist das doof, wenn man sich gerade einen Film im Vollbildmodus anschaut, weil sich das Fenster richtigerweise vor den Film drängt. Mein bisheriger Ansatz ist: -EnumWindows -GetWindowPlacement / GetWindowRect Nun würde ich das gerne mit Screen.Width/Screen.Height vergleichen, aber da kommt bei einer >= Abfrage nichts Gescheites bei raus. (In beiden Fällen) Hier mal mein SRC:
Delphi-Quellcode:
Variante1
function AnyFullscreenWindows: Boolean;
var AnyMaximized: Boolean; begin AnyMaximized:=false; EnumWindows(@EnumWindowCallback, integer(@AnyMaximized)); result:=AnyMaximized; end;
Delphi-Quellcode:
function CompareRectSize(first, second: trect): real; stdcall;
// Result= Verhaeltnis begin result:= ((second.Right-second.Left)* (second.Bottom-second.Top)) / ((first.Right-first.Left)* (first.Bottom-first.Top)); end; function EnumWindowCallback(hwnd:HWND; lParam: pBoolean): Boolean; stdcall; var ScreenRect,WindowRect: tRect; begin ScreenRect.Left:=0; ScreenRect.Top:=0; ScreenRect.Right:=Screen.Width; ScreenRect.Bottom:=Screen.Height; GetWindowRect(HWND,WindowRect); lParam^:= (lParam^) or (CompareRectSize(ScreenRect,WindowRect)>=1); Result:=true; end; Variante2
Delphi-Quellcode:
function GetWindowState(Wnd: HWnd): Boolean; stdcall;
var WPlacement : PWINDOWPLACEMENT; begin GetMem(WPlacement,SizeOf(TWINDOWPLACEMENT)); WPlacement^.Length:=SizeOf(TWINDOWPLACEMENT); if GetWindowPlacement(Wnd,WPlacement) then if (Wplacement^.rcNormalPosition.Left<=0) and (Wplacement^.rcNormalPosition.Top<=0) and (screen.Width<=Wplacement^.rcNormalPosition.Right) and (screen.Height<=Wplacement^.rcNormalPosition.Bottom) then result:=true else result:=false else Result:=false; FreeMem(WPlacement); end; function EnumWindowCallback(hwnd:HWND; lParam: pBoolean): Boolean; stdcall; var ScreenRect,WindowRect: tRect; begin lParam^:= (lParam^) or (GetWindowState(HWND)); Result:=true; end;[/ Ich tippe auf einen Denkfehler meinerseits, aber ich komme einfach nicht drauf. HILFE! :-P Vielen Dank im Vorraus c20c |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz