SetProcessDpiAwareness 函式 (殼層calingapi.h)

設定進程預設 DPI 感知層級。 這相當於使用對應的DPI_AWARENESS_CONTEXT值呼叫 SetProcessDpiAwarenessContext

注意

建議您透過應用程式指令清單來設定處理程式預設 DPI 感知,而不是 API 呼叫。 如需詳細資訊 ,請參閱為進程設定預設 DPI 感知 。 透過 API 呼叫設定進程預設 DPI 感知可能會導致非預期的應用程式行為。

語法

HRESULT SetProcessDpiAwareness(
  [in] PROCESS_DPI_AWARENESS value
);

參數

[in] value

要設定的 DPI 感知值。 可能的值為來自 PROCESS_DPI_AWARENESS 列舉。

傳回值

此函式會傳回下列其中一個值。

傳回碼 描述
S_OK
已成功設定應用程式的 DPI 感知。
E_INVALIDARG
傳入的值無效。
E_ACCESSDENIED
先前或透過應用程式 (.exe) 指令清單呼叫此 API,已設定 DPI 感知。

備註

舊版 Windows 只有整個應用程式的一個 DPI 感知值。 對於這些應用程式,建議在指令清單中設定 DPI 感知值,如 PROCESS_DPI_AWARENESS中所述。 在該建議下,您不應該使用 SetProcessDpiAwareness 來更新 DPI 感知。 事實上,未來對此 API 的呼叫會在設定 DPI 感知一次之後失敗。 現在 DPI 感知已系結至線程而非應用程式,您可以使用這個方法來更新 DPI 感知。 不過,請考慮改用 SetThreadDpiAwarenessContext

重要  

對於較舊的應用程式,強烈建議不要使用 SetProcessDpiAwareness 來設定應用程式的 DPI 感知。 相反地,您應該在應用程式指令清單中宣告應用程式的 DPI 感知。 如需 DPI 感知值的詳細資訊,以及如何在指令清單中設定它們,請參閱 PROCESS_DPI_AWARENESS

 
您必須先呼叫此 API,才能呼叫相依於 dpi 感知的任何 API。 這是建議使用應用程式指令清單而非 SetProcessDpiAwareness API 的一部分。 為應用程式設定 API 感知之後,任何未來對此 API 的呼叫都會失敗。 不論您是在指令清單中設定 DPI 感知,還是使用此 API,都是如此。

如果未設定 DPI 感知等級,則預設值為 PROCESS_DPI_UNAWARE

規格需求

需求
最低支援的用戶端 Windows 8.1 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2012 R2 [僅限傳統型應用程式]
目標平台 Windows
標頭 shellscalingapi.h
程式庫 Shcore.lib
Dll Shcore.dll

另請參閱

PROCESS_DPI_AWARENESS

SetThreadDpiAwarenessContext

設定進程的預設 DPI 感知