- すべてのプログラム要素が正しくスケーリングされます
- 一部の要素のみが正しくスケーリングされます
- このプログラムは、Windowsにスケーリングの方法がわからないことを伝え、オペレーティングシステムがプログラム全体を可能な限りスケーリングします(その結果、多くの古いプログラムでインターフェイスがぼやけています)
ユーザーにとって最も不快なオプションは、もちろん2番目です。 プログラムを使用するのに不便にするだけでなく、一般に使用を不可能にすることもできます。
以下に、QTIPlotの例でこれを修正する方法を示します。
QTIPlotは、その主な機能(名前が示すとおり)がチャート作成であるプログラムです。 また、Qtを使用します。Qtは、オペレーティングシステムにそれ自体を拡張できることを伝えます。 しかし、残念なことに、何かがおかしくなり、その結果、スケーリングなしでシステム上で開かれた場合、スケーリングされたシステム上で作成され、慎重に位置合わせされたグラフィックは、調和を失います-フォントがクリープし始めます。 このプログラムはオープンソースのように見えます(ただし、コードを見つけるには探偵のスキルが必要です)が、すぐには修正できませんでした。 そのため、プログラムの代替品を探すよりも、台無しになったインターフェイスを使用する方が良いと判断し、Windowsに拡張できないことを通知することにしました。
これを行うには、変更するexeファイルがあるディレクトリに、次の内容のマニフェストファイルを作成します。
qtiplot.exe.manifest
<?xml version="1.0" encoding="utf-8"?> <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <assemblyIdentity version="1.0.0.0" name="MyApplication.app" /> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="asInvoker" uiAccess="false" /> </requestedPrivileges> <applicationRequestMinimum> <defaultAssemblyRequest permissionSetReference="Custom" /> <PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" /> </applicationRequestMinimum> </security> </trustInfo> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> </application> </compatibility> <asmv3:application> <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> <dpiAware>false</dpiAware> </asmv3:windowsSettings> </asmv3:application> </asmv1:assembly>
(ここで私たちの主なものはもちろんです
<dpiAware>false</dpiAware>
)
その後、Visual Studio Toolsから「開発者コマンドプロンプト」を起動し、このディレクトリに移動してコマンドを実行します
mt.exe -nologo -manifest qtiplot.exe.manifest -outputresource:qtiplot.exe
(当然、「qtiplot.exe」は、パッチを適用する必要があるexeファイルの名前に置き換える必要があります)。
それだけで、プログラムを実行し、正しいスケーリングで
マニフェストを使用したこれらのダンスの素晴らしいボーナスは、ソースコードがないプログラムでもこの方法で修正できることです。
PSこの出版物を書いた後、「スケーリング」という言葉が現代のスペルチェック辞書に含まれていないことに気付きました。 どこでも「スケーリング」に置き換える必要がありました。 この機会に、調査の下。