Да здравствует мыло душистое, или как исправить неправильное масштабирование Windows программ

Не секрет, что внедрение высокого разрешения экранов идет быстрее, чем адаптация Windows программ под них. Проблемы появляются в первую очередь тогда, когда нам надоедает напрягать глаза и пользоваться увеличительными стеклами, и мы изменяем масштабирование системы. Программы можно разделить на три категории по тому, как они ведут себя при этом: Все элементы программы масштабируются правильно Только некоторые элементы масштабируются правильно Программа говорит Windows, что не умеет масштабироваться, и тогда операционная система сама масштабирует всю программу как умеет (в результате чего мы и видим замыленный интерфейс во многих старых программах) Самый неприятный вариант для пользователя — это конечно же второй. Он может не только сделать программу неудобной для использования, но и вообще сделать пользование невозможным.Ниже я покажу на примере QTIPlot как это можно исправить. QTIPlot — это программа, главная функция которой (как ясно из названия) — это построение графиков. Также она использует Qt, который и говорит операционной системе, что умеет сам масштабировать. Но к сожалению что-то идет не так и в результате графики, созданные и старательно выравненные на системе с масштабированием, теряют всю свою гармонию если их открыть на системе без масштабирования — шрифты начинают расползаться и т.п. Программа эта вроде как open source (хотя и надо обладать некоторыми детективными навыками, чтобы найти ее код), но с наскока мне исправить ее не удалось. Поэтому я расценил, что лучше жить с замыленным интерфейсом, чем искать замену программе, и решил заставить программу говорить Windows, что она не умеет масштабироваться.

Для этого надо создать манифест-файл в той директории, где находится exe-файл, который мы хотим изменить, со следующим содержанием:

qtiplot.exe.manifest false (главное для нас здесь — это конечно же false ).После этого надо запустить «Developer Command Prompt» из Visual Studio Tools, перейти в эту директорию и выполнить команду mt.exe -nologo -manifest qtiplot.exe.manifest -outputresource: qtiplot.exe (естественно «qtiplot.exe» надо заменить на название того exe-файла, который надо пропатчить).Вот и всё, можно запускать программу и радоваться теплому замыленному интерфейсу с правильным масштабированием.d94c675b73874ae99355e3cfd07fa74c.pngПриятный бонус этих танцев с манифестом в том, что так можно исправить даже те программы, к которым у нас нет source кода.

PS После того как написал эту публикацию, заметил, что слово «скалирование» не входит в современные орфографические словари. Пришлось заменить его везде на «масштабирование». По этому поводу ниже опрос.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

© Habrahabr.ru