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 열거형에서 가져옵니다.

반환 값

이 함수는 다음 값 중 하나를 반환합니다.

반환 코드 Description
S_OK
앱에 대한 DPI 인식이 성공적으로 설정되었습니다.
E_INVALIDARG
전달된 값이 잘못되었습니다.
E_ACCESSDENIED
이전에 이 API를 호출하거나 애플리케이션(.exe) 매니페스트를 통해 DPI 인식이 이미 설정되었습니다.

설명

이전 버전의 Windows에는 전체 애플리케이션에 대한 DPI 인식 값이 하나만 있었습니다. 이러한 애플리케이션의 경우 PROCESS_DPI_AWARENESS 설명된 대로 매니페스트에서 DPI 인식 값을 설정하는 것이 좋습니다. 이 권장 사항에 따라 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
라이브러리 Shcore.lib
DLL Shcore.dll

추가 정보

PROCESS_DPI_AWARENESS

SetThreadDpiAwarenessContext

프로세스에 대한 기본 DPI 인식 설정