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

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

1 ответ1

5

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

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

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

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

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

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

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

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .