Función SetProcessDpiAwareness (shellscalingapi.h)

Establece el nivel de reconocimiento de PPP predeterminado del proceso. Esto equivale a llamar a SetProcessDpiAwarenessContext con el valor de DPI_AWARENESS_CONTEXT correspondiente.

Nota

Se recomienda establecer el reconocimiento de PPP predeterminado del proceso a través del manifiesto de aplicación, no una llamada API. Consulte Establecimiento del reconocimiento de PPP predeterminado para un proceso para obtener más información. Establecer el reconocimiento de PPP predeterminado del proceso a través de la llamada API puede dar lugar a un comportamiento inesperado de la aplicación.

Sintaxis

HRESULT SetProcessDpiAwareness(
  [in] PROCESS_DPI_AWARENESS value
);

Parámetros

[in] value

Valor de reconocimiento de PPP que se va a establecer. Los valores posibles proceden de la enumeración PROCESS_DPI_AWARENESS .

Valor devuelto

Esta función devuelve uno de los valores siguientes.

Código devuelto Descripción
S_OK
El reconocimiento de PPP de la aplicación se estableció correctamente.
E_INVALIDARG
El valor pasado no es válido.
E_ACCESSDENIED
El reconocimiento de PPP ya está establecido, ya sea llamando a esta API anteriormente o a través del manifiesto de la aplicación (.exe).

Comentarios

Las versiones anteriores de Windows solo tenían un valor de reconocimiento de PPP para toda la aplicación. Para esas aplicaciones, la recomendación era establecer el valor de reconocimiento de PPP en el manifiesto, tal y como se describe en PROCESS_DPI_AWARENESS. En esa recomendación, no se suponía que usara SetProcessDpiAwareness para actualizar el reconocimiento de PPP. De hecho, las llamadas futuras a esta API producirían un error después de establecer el reconocimiento de PPP una vez. Ahora que el reconocimiento de PPP está vinculado a un subproceso en lugar de a una aplicación, puede usar este método para actualizar el reconocimiento de PPP. Sin embargo, considere la posibilidad de usar SetThreadDpiAwarenessContext en su lugar.

Importante  

En el caso de las aplicaciones anteriores, se recomienda encarecidamente no usar SetProcessDpiAwareness para establecer el reconocimiento de PPP de la aplicación. En su lugar, debe declarar el reconocimiento de PPP para la aplicación en el manifiesto de aplicación. Consulte PROCESS_DPI_AWARENESS para obtener más información sobre los valores de reconocimiento de PPP y cómo establecerlos en el manifiesto.

 
Debe llamar a esta API antes de llamar a cualquier API que dependa del reconocimiento de ppp. Esto forma parte de la razón por la que se recomienda usar el manifiesto de aplicación en lugar de la API SetProcessDpiAwareness . Una vez establecido el reconocimiento de la API para una aplicación, se producirá un error en las futuras llamadas a esta API. Esto se cumple independientemente de si establece el reconocimiento de PPP en el manifiesto o mediante esta API.

Si no se establece el nivel de reconocimiento de PPP, el valor predeterminado es PROCESS_DPI_UNAWARE.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8.1 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2012 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shellscalingapi.h
Library Shcore.lib
Archivo DLL Shcore.dll

Consulte también

PROCESS_DPI_AWARENESS

SetThreadDpiAwarenessContext

Establecer el reconocimiento de PPP predeterminado para un proceso