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
DPI 認識は、この API を以前に呼び出すか、アプリケーション (.exe) マニフェストを使用して既に設定されています。

注釈

以前のバージョンの Windows では、アプリケーション全体に対して 1 つの DPI 認識値しかありませんでした。 これらのアプリケーションでは、「 PROCESS_DPI_AWARENESS」で説明されているように、マニフェストで DPI 認識値を設定することをお勧めします。 この推奨事項では、 SETProcessDpiAwareness を使用して DPI 認識を更新することは想定されていませんでした。 実際、DPI 認識が 1 回設定された後、この 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 認識の設定