更改 Windows 7 默认滚动条

Rah*_*kur 1 windows-7 scrollbar

无意冒犯,但默认的 Windows 7 滚动条并不是那么好。我希望最好在不使用任何第三方应用程序的情况下更改它们,更不要使用任何付费的第三方应用程序。

我听说 Stardock 的 Window Blinds 当然是一个付费应用程序,可以用来这样做,但我不确定。Window Blinds 可以仅用于更改滚动条吗?

all*_*tic 5

为了更改应用程序中显示的滚动条,您必须了解 GUI 是如何呈现的。

GUI(图形用户界面)本质上可以通过以下两种方式之一呈现:

  • Native:应用程序要求操作系统呈现特定类型的小部件。Windows 操作系统中有可用的内置小部件;这些小部件出现在内置的 Microsoft 应用程序以及许多使用相同工具包的第三方程序中。

  • 自定义:许多应用程序使用自定义小部件工具包或小部件的自定义样式,也称为“非本地”。这样做的方式是,应用程序请求一个通用的 2d 画布,它基本上是一个空矩形,并手动将它想要的像素“绘制”到该空间中。执行此操作的应用程序不会调用 Windows 操作系统来请求它自己的本机小部件;相反,他们使用工具包或特定于应用程序的代码“绘制”它们。

直接或间接使用原生小部件的工具包示例包括:

  • Java SWT
  • 大多数使用 Windows 窗体的 .NET 应用程序,尽管自定义窗体呈现器是可能的
  • 使用 ATL、MFC 或直接使用 Win32 API 的应用程序

自定义工具包的示例包括:

  • GTK+(某些引擎;存在绘制本地 Windows 小部件的“本地”引擎)
  • Java Swing(Java 仍然自己绘制,但它使用来自本机小部件外观的图形资源来模拟或近似本机小部件的外观和感觉)
  • Qt(某些引擎;存在一个“本机”引擎,可以近似本机 Windows 小部件或在可能的情况下直接使用它们)
  • Juce(类似于 Java Swing)

现在,当您说“更改 Windows 7 默认滚动条”时,我认为您是在谈论更改本机滚动条的显示方式。因为很难或不可能强制每个使用滚动条的应用程序以特定方式绘制它,因为应用程序可能具有手动绘制滚动条的自定义代码,然后您无法轻松拦截它使用的代码并改变它。

尤其是,如果您正在运行的应用程序使用众所周知的自定义工具包,例如 Java Swing,您可能能够为特定工具包强制自定义 UI;但是您必须在“每个工具包”的基础上应用这些更改;如果应用程序在完全没有工具包的画布上使用硬编码绘图,那么您仍然不走运。

例如,WindowBlinds 使用 DLL“挂钩”将自己的代码注入系统上的图形应用程序。WindowBlinds 代码拦截对请求本机小部件的 Windows API 的调用,它不是绘制默认样式的小部件,而是根据 WindowBlinds 主题提供的主题数据绘制一个小部件。这个 DLL 钩子本质上是唯一的方法;没有可以修改本机应用程序图形元素的通用注册表修复或资源破解。Windows 的内置主题/样式功能不是非常灵活,因此需要第三方应用程序,例如 WindowBlinds,它将自定义代码注入您运行的每个应用程序中,以便执行从默认滚动条到自定义滚动条的转换。

聪明的应用程序(或具有某些安全权限的应用程序)可以防止这种 DLL 挂钩,因为它对应用程序中信息的完整性构成了潜在的安全风险:如果不受信任的程序可以成功地挂钩您程序中的 DLL,那么它可以做任何事情,本质上,包括损害该应用程序的功能限制功能。因此,出于安全原因,某些应用程序禁止这种修改。

简短的回答是你应该只使用 WindowBlinds(来吧,付钱!),但请注意,由于有许多不同的渲染方式,你永远无法在所有应用程序中实现 100% 滚动条替换.