web-dev-qa-db-ja.com

高dpiスケーリングを強制する方法は?

アプリケーションを強制的に高dpiにスケーリングするにはどうすればよいですか?

  • 本当にそうではないのに、開発者がそれをhigh-dpi対応として明示したアプリケーションがあるとしましょう。どうすればdpiスケーリングを強制できますか?

  • Microsoftが "HighDpiAware"互換性シムを実際に適用していないのに、アプリケーションが実際に適用していないアプリケーションがあるとしましょう。どうすればdpiスケーリングを強制できますか?

Windowsにアプリケーションにdpiスケーリングを適用させるにはどうすればよいですか?


編集:高dpiスケーリングとは何ですか?

すべてのユーザーがWindowsを96dpiで実行するわけではありません。すべてのボタンが75x23ピクセルであるとは限りません。すべてのツールバーの高さが25ピクセルであるとは限りません。また、すべてのツリービューグリフが16x16であるとは限りません。ユーザーがWindows用に別のdpi設定を選択した場合、すべてを適切にスケーリングする必要があります。

問題は、高dpi設定を適切に処理することでほとんどの開発者が仕事をしないことです。せいぜいすべてが「同じサイズ」のままです。つまり、すべてが表示されます ちっちゃい。最悪の場合、フォームが正しくレイアウトされず、テキストが切り取られ、コントロールが表示されません。

Windows Vista以降、デスクトップコンポジションの力を活用して、Microsoftは開発者の仕事をあきらめ、現在はアプリケーションに依存しています。ユーザーに96dpiで実行していることをアプリに伝えます。次にWindowsは、ビデオカードとデスクトップコンポジションを使用してフォームを拡大します。

Pro:フォームのコンテンツは、読みやすいサイズになります。
Con:すべてがわずかにぼやけます。

この「高dpiスケーリング」機能はユーザーの裁量でのみ機能し、以下が必要です。

  • Windows Vista以降
  • 有効にするデスクトップコンポジション
  • ユーザーが「Windowsを使用するXPスタイルのスケーリング」をオフにする
  • アプリケーションのスケーリングを無効にしないユーザー

開発者は、高dpiスケーリングをオプトアウトできます。アプリケーションを適切に作成するための努力を払い、high-dpiを適切に処理することがわかっている場合。実行可能ファイルにマニフェストエントリを追加してこのスケーリングをオプトアウトし、「high-dpi対応」であることを宣言します。

アプリケーションがユーザーの設定(フォント、フォントサイズ、dpi設定を含む)を尊重するようにするhowのトピックは、stack overflow。同様に、「high-dpi認識」を宣言するマニフェストエントリの構文も同様です。

これsuper-userに関する質問は、ignore実際にアプリケーションis n't high-dpi対応のときに、先に進んでhigh-dpi対応のマニフェストエントリを追加した開発者。彼らはWindowsにスケーリングを無効にするように指示しましたが、実際にはアプリケーションをテストしませんでした。 そこにあるソフトウェア には「高dpi対応」のマニフェストエントリがあり、アプリケーションは「大きなフォント」(120dpiなど)では使用できません。

27
Ian Boyd

うーん。私の提案は、マニフェストを編集して、誤った宣言を削除することです。そして、それについて開発者にバグを報告することを忘れないでください!

編集:マニフェストを実行可能ファイルの隣に配置するだけでよいことに注意してください。ために foo.exe、マニフェストをfoo.exe.manifestMSDNの記事 を参照してください(「ファイル名の構文」というセクションをご覧ください)。

5
SamB

SetProcessDPIAwareへの呼び出しをフックしてリダイレクトするDLLをリリースしました。コードによるDPIスケーリングを無効にするアプリケーションの場合、これは(バイナリパッチと比べて)高速で簡単な修正です。

DPIMangler: ブログ投稿ソースコード

8
George

マニフェストは引き続き編集できます。EXEファイル自体で編集する必要があります。マニフェストをサポートしているリソースエディターを探します。基本的なサポートの例はXN Resource Editorです。)HIGHDPIAWAREについて言及している行を見つけて削除し、実行可能ファイルを保存します。

ただし、編集する前に必ず実行可能ファイルのコピーを作成してください。

6
trlkly

ResizeEnableはあなたが探しているものですか?

http://www.digitallis.co.uk/pc/ResizeEnable/

0
James T