![]() |
High DPI per Monitor V2 (DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2)
Hallo,
kann mir jemand helfen, wie ich in Delphi 10 (Berlin) herausfinde ob mein Programm in High DPI per Monitor V2 läuft? Dass ich das Programm per Manifest in ab Win10 1703 in Per Monitor DPI 2 schalten kann weiß ich. (<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor</dpiAwareness>) Aber wie frage ich ab ob mein Programm wirklich PerMonitorDPIV2 bekommen hat (für ältere Win10 ist das nämlich nicht so)? Der folgende Code sollte dies machen, aber mir fehlen die Deklarationen für: GetThreadDpiAwarenessContext AreDpiAwarenessContextsEqual Die sind in Delphi 10 Berlin noch nicht vorhanden. Und ich tu mich da schwer, dies richtig zu machen. Bei MSDN findet man die ja, aber wie müssen die in Delphi aussehen? ![]() ![]()
Delphi-Quellcode:
Kann mir jemand bei den Deklarationen helfen? Ich denk die Funktionen stammen aus user32
function GetDPIAwareness: Integer;
type DPI_AWARENESS_CONTEXT = type THandle; const DPI_AWARENESS_CONTEXT_UNAWARE = DPI_AWARENESS_CONTEXT(-1); DPI_AWARENESS_CONTEXT_SYSTEM_AWARE = DPI_AWARENESS_CONTEXT(-2); DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE = DPI_AWARENESS_CONTEXT(-3); DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 = DPI_AWARENESS_CONTEXT(-4); var dpiAwarenessContext: DPI_AWARENESS_CONTEXT; begin Result:= 0; //asume unaware // Get the DPI awareness of the window from the DPI-awareness context of the thread dpiAwarenessContext := GetThreadDpiAwarenessContext(); // Convert DPI awareness to a string if IsDpiAware then begin if (AreDpiAwarenessContextsEqual(dpiAwarenessContext, DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2)) then begin //DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 Result:= 2; end else begin //DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE Result:= 1; end; end; end; Danke |
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