setProcessDpiAwareness 函数 (shellscalingapi.h)

设置进程默认 DPI 感知级别。 这等效于使用相应的DPI_AWARENESS_CONTEXT值调用 SetProcessDpiAwarenessContext。

注意

建议通过应用程序清单(而不是 API 调用)设置进程默认 DPI 感知。 有关详细信息 ,请参阅设置进程的默认 DPI 感知 。 通过 API 调用设置进程默认 DPI 感知可能会导致意外的应用程序行为。

语法

HRESULT SetProcessDpiAwareness(
  [in] PROCESS_DPI_AWARENESS value
);

参数

[in] value

要设置的 DPI 感知值。 可能的值来自 PROCESS_DPI_AWARENESS 枚举。

返回值

此函数返回以下值之一。

返回代码 说明
S_OK
已成功设置应用的 DPI 感知。
E_INVALIDARG
传入的值无效。
E_ACCESSDENIED
通过之前调用此 API 或通过应用程序 (.exe) 清单来设置 DPI 感知。

注解

以前版本的 Windows 对于整个应用程序只有一个 DPI 感知值。 对于这些应用程序,建议在清单中设置 DPI 感知值,如 PROCESS_DPI_AWARENESS 中所述。 根据该建议,不应使用 SetProcessDpiAwareness 更新 DPI 感知。 事实上,在设置 DPI 感知一次后,将来对此 API 的调用将失败。 现在 DPI 感知已绑定到线程而不是应用程序,可以使用此方法更新 DPI 感知。 但是,请考虑改用 SetThreadDpiAwarenessContext 。

重要说明  

对于较旧的应用程序,强烈建议不要使用 SetProcessDpiAwareness 来设置应用程序的 DPI 感知。 相反,应在应用程序清单中声明应用程序的 DPI 感知。 有关 DPI 感知值以及如何在清单中设置它们的详细信息,请参阅 PROCESS_DPI_AWARENESS 。

 
在调用依赖于 dpi 感知的任何 API 之前,必须调用此 API。 这是建议使用应用程序清单而不是 SetProcessDpiAwareness API 的部分原因。 为应用设置 API 感知后,以后对此 API 的任何调用都将失败。 无论是在清单中设置 DPI 感知还是使用此 API,都是如此。

如果未设置 DPI 感知级别,则默认值为 PROCESS_DPI_UNAWARE。

要求

要求 值
最低受支持的客户端 Windows 8.1 [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 R2 [仅限桌面应用]
目标平台 Windows
标头 shellscalingapi.h
Library Shcore.lib
DLL Shcore.dll

另请参阅

PROCESS_DPI_AWARENESS

SetThreadDpiAwarenessContext

设置进程的默认 DPI 感知