Freigeben über


SetProcessDpiAwareness-Funktion (shellscalingapi.h)

Legt die prozessstandardbasierte DPI-Bewusstseinsstufe fest. Dies entspricht dem Aufrufen von SetProcessDpiAwarenessContext mit dem entsprechenden DPI_AWARENESS_CONTEXT-Wert .

Hinweis

Es wird empfohlen, die Prozessstandard-DPI-Sensibilisierung über das Anwendungsmanifest und nicht über einen API-Aufruf festzulegen. Weitere Informationen finden Sie unter Festlegen der standardmäßigen DPI-Erkennung für einen Prozess . Das Festlegen der prozessstandardbasierten DPI-Sensibilisierung per API-Aufruf kann zu unerwartetem Anwendungsverhalten führen.

Syntax

HRESULT SetProcessDpiAwareness(
  [in] PROCESS_DPI_AWARENESS value
);

Parameter

[in] value

Der festzulegende DPI-Bewusstseinswert. Mögliche Werte stammen aus der PROCESS_DPI_AWARENESS-Enumeration .

Rückgabewert

Diese Funktion gibt einen der folgenden Werte zurück.

Rückgabecode BESCHREIBUNG
S_OK
Die DPI-Wahrnehmung für die App wurde erfolgreich festgelegt.
E_INVALIDARG
Der übergebene Wert ist ungültig.
E_ACCESSDENIED
Die DPI-Wahrnehmung ist bereits festgelegt, entweder durch aufrufen dieser API zuvor oder über das Anwendungsmanifest (.exe).

Hinweise

Frühere Versionen von Windows hatten nur einen DPI-Bewusstseinswert für die gesamte Anwendung. Für diese Anwendungen bestand die Empfehlung darin, den DPI-Sensibilisierungswert im Manifest festzulegen, wie in PROCESS_DPI_AWARENESS beschrieben. Gemäß dieser Empfehlung sollten Sie SetProcessDpiAwareness nicht verwenden, um die DPI-Erkennung zu aktualisieren. Tatsächlich schlagen zukünftige Aufrufe dieser API fehl, nachdem die DPI-Erkennung einmal festgelegt wurde. Da die DPI-Wahrnehmung nun an einen Thread und nicht an eine Anwendung gebunden ist, können Sie diese Methode verwenden, um die DPI-Wahrnehmung zu aktualisieren. Erwägen Sie jedoch stattdessen die Verwendung von SetThreadDpiAwarenessContext .

Wichtig  

Für ältere Anwendungen wird dringend empfohlen, SetProcessDpiAwareness nicht zu verwenden, um die DPI-Wahrnehmung für Ihre Anwendung festzulegen. Stattdessen sollten Sie die DPI-Bewusstseinserkennung für Ihre Anwendung im Anwendungsmanifest deklarieren. Weitere Informationen zu den DPI-Bewusstseinswerten und deren Festlegung im Manifest finden Sie unter PROCESS_DPI_AWARENESS .

 
Sie müssen diese API aufrufen, bevor Sie APIs aufrufen, die von der dpi-Wahrnehmung abhängen. Dies ist ein Teil des Grunds, warum empfohlen wird, das Anwendungsmanifest anstelle der SetProcessDpiAwareness-API zu verwenden. Sobald die API-Wahrnehmung für eine App festgelegt ist, schlagen alle zukünftigen Aufrufe dieser API fehl. Dies gilt unabhängig davon, ob Sie die DPI-Sensibilisierung im Manifest oder mithilfe dieser API festlegen.

Wenn die DPI-Bewusstseinsstufe nicht festgelegt ist, ist der Standardwert PROCESS_DPI_UNAWARE.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8.1 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile shellscalingapi.h
Bibliothek Shcore.lib
DLL Shcore.dll

Weitere Informationen

PROCESS_DPI_AWARENESS

SetThreadDpiAwarenessContext

Festlegen der standardmäßigen DPI-Erkennung für einen Prozess