Изменение полосы прокрутки по умолчанию в Windows 7

Без обид, но стандартные полосы прокрутки Windows 7 не так хороши. Я хочу изменить их предпочтительно без использования каких-либо сторонних приложений и тем более без использования каких-либо платных сторонних приложений.

Я слышал, что Window Blinds от Stardock, который является платным приложением, конечно, можно использовать для этого, но я не уверен в этом. Можно ли использовать жалюзи только для изменения полос прокрутки?

1 ответ

Решение

Чтобы изменить полосы прокрутки, отображаемые в приложениях, вы должны понимать, как отображаются графические интерфейсы.

GUI (графический интерфейс пользователя) может быть представлен, по сути, одним из двух способов:

  • Собственный: приложение просит операционную систему визуализировать виджет определенного типа. В операционной системе Windows есть встроенные виджеты; Эти виджеты появляются во встроенных приложениях Microsoft, а также во многих сторонних программах, использующих один и тот же инструментарий.

  • Пользовательский: во многих приложениях используется пользовательский набор инструментов виджетов или пользовательские стили виджетов, также известные как "не родные". Таким образом, приложение запрашивает общий 2d холст, который по сути является пустым прямоугольником, и вручную "рисует" нужные пиксели в этом пространстве. Приложения, которые делают это, не обращаются к операционной системе Windows, чтобы запросить собственные собственные виджеты; вместо этого они "рисуют" их, используя инструментарий или код приложения.

Примеры наборов инструментов, которые прямо или косвенно используют собственные виджеты, включают:

  • Java SWT
  • Большинство приложений.NET, которые используют Windows Forms, хотя возможны пользовательские средства визуализации форм
  • Приложения, использующие ATL, MFC или непосредственно Win32 API

Примеры пользовательских наборов инструментов включают в себя:

  • GTK + (некоторые движки; существует "родной" движок, который рисует родные виджеты Windows)
  • Java Swing (Java по-прежнему рисует самостоятельно, но использует графические ресурсы из внешнего вида виджетов для эмуляции или аппроксимации внешнего вида родных виджетов)
  • Qt (некоторые движки; существует "родной" движок, который приближает родные виджеты Windows или использует их напрямую, если это возможно)
  • Juce (похож на Java Swing)

Теперь, когда вы говорите "Изменить полосу прокрутки Windows 7 по умолчанию", я думаю, что вы говорите об изменении внешнего вида полос прокрутки. Потому что трудно или невозможно заставить каждое приложение, которое когда-либо использует полосу прокрутки, рисовать его особым образом, потому что приложение может иметь пользовательский код, который рисует полосу прокрутки вручную, и тогда вы не сможете легко перехватить код, который он использует и измени это.

В частности, если приложение, которое вы запускаете, использует хорошо известный пользовательский инструментарий, такой как Java Swing, вы можете настроить пользовательский интерфейс для определенных инструментариев; но вы должны будете применить эти изменения для каждого отдельного инструментария; и вам все еще не повезло, если приложение использует жестко запрограммированное рисование на холсте без набора инструментов вообще.

Например, WindowBlinds использует DLL-хук, чтобы внедрить свой собственный код в графические приложения в системе. Код WindowBlinds перехватывает вызовы в Windows API, которые запрашивают собственные виджеты, и вместо рисования виджета в стиле по умолчанию он рисует один на основе данных темы, предоставленных темой WindowBlinds. Этот хук DLL по сути является единственным способом сделать это; не существует исправления реестра общего назначения или взлома ресурса, который может изменить графические элементы нативных приложений. Встроенные в Windows возможности создания тем / стилей не очень гибки, поэтому для сторонних приложений, таких как WindowBlinds, требуется вводить пользовательский код в каждое приложение, которое вы запускаете, чтобы выполнить преобразование из полос прокрутки по умолчанию в пользовательские.

Умные приложения (или приложения с определенными привилегиями безопасности) могут предотвратить эту перехватку DLL, потому что это создает потенциальную угрозу безопасности для целостности информации в приложении: если ненадежная программа может успешно перехватить DLL в вашей программе, она может делать все, что угодно по сути, включая компрометирующую функцию, ограничивающую функциональность этого приложения Поэтому некоторые приложения по соображениям безопасности запрещают эту модификацию.

Короткий ответ заключается в том, что вы должны просто использовать WindowBlinds (да ладно, копите деньги!), Но имейте в виду, что вы никогда не сможете добиться 100% замены полосы прокрутки во всех приложениях из-за множества различных способов выполнения рендеринга.,

Другие вопросы по тегам