Чтобы изменить полосы прокрутки, отображаемые в приложениях, вы должны понимать, как отображаются графические интерфейсы.
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% замены полосы прокрутки во всех приложениях из-за множества различных способов выполнения рендеринга. ,