如何缩小任务栏中的地址工具栏?

如何缩小任务栏中的地址工具栏?

我喜欢能够直接从任务栏运行命令。因此,我在新的 Windows 7 系统上启用了地址工具栏 - 就像我在旧的 XP 系统上一样。但是,该栏似乎有一个强制性的最小长度,比我希望的要长一点。如果我没记错的话,它的长度大约是 XP 允许的最小长度的两倍。

有什么方法可以调整这个最小长度吗?通过注册表项或其他方法?

(注:我还有一个相关问题,关于删除刷新按钮在酒吧的尽头。)

编辑:为了清晰起见,我添加了一张屏幕截图。我想缩短的工具栏是下面圈出的那个,带有一个空的文本输入字段,其中包含一个下拉菜单和“刷新”按钮。我目前将它放置在快速启动工具栏和任务栏之间。在任务栏的另一侧,系统托盘之前,是桌面工具栏。

在此处输入图片描述

答案1

应该如果你确定的话可以缩小它锁定任务栏已关闭,但正如您所发现的,Windows 资源管理器当然会强制设置最小长度。除了通过 hackexplorer.exe找到(可能是)硬编码的最小长度的位置外,您能做的不多,只能使用反馈渠道向 Microsoft 投诉。

如果你隐藏地址文本标签,那么您可以将其缩小一点(按标签的宽度),但当然,您已经这样做了。

一种可能的解决方案可能是使用第三方窗口操作工具直接编辑窗口,隐藏刷新按钮并调整工具带大小。

您还可以尝试使用宏/热键程序甚至 AutoHotkey/AutoIt/等来设置触发器和事件或仅仅编写脚本。

更新:

过去几天,我尝试编写一个程序(首先是 C++,然后是 AutoHotkey 脚本)来修复此问题。我学到了一些有趣的东西:

  • 删除刷新按钮非常简单,就像扩展组合框以使用按钮所使用的空间(25 像素)一样。
  • 拖动地址栏手柄重置刷新按钮和组合框大小换句话说,除非你锁定任务栏,否则 Explorer 会将地址栏重置为原来的状态,因为它是硬编码和动态的。
  • 缩小地址(组合框)完成,但即便如此,钢筋本身仍然保持相同的大小,最终任务栏上会出现一片空白。

换句话说,刷新按钮和最小尺寸是超级硬编码并不旨在提供定制。

也许有人会想这样做:

  1. 使用任务栏中的地址栏,并对其大小和按钮感到厌烦
  2. 找出硬编码的文件中的内容(Windows 7 中的 Explorer 文件比 XP 中的多得多)
  3. 找到硬编码的地方(希望只有一个变量,但可能性很小)
  4. 检查其他影响,例如触发大小的其他因素(Windows 的架构往往有很多交互)
  5. 编写破解/服务/驱动程序来解决这个问题(破解更容易,但更糟糕,因为在大多数更新后都必须重新应用它)

除非有人恰好对修复它有足够的兴趣,愿意不惜一切代价,否则你唯一的选择就是直接向微软投诉(但别忘了他们很快就要推出 Windows 8,所以花时间修复 Windows 7,好吧……)

同时,这里是修改后的 AutoHotkey 脚本,可让您手动指定宽度:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SetAddressBarWidth.ahk
;
; This script allows the user to specify the width of the address-bar band of
; the Windows 7 taskbar. It also hides the refresh button and extends the
; combo-box (edit field) to use the space of the refresh button.
;
; http://superuser.com/questions/444407/
;
;   (cl) 2012- Synetech inc., Alec Soroudi
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

#NoTrayIcon                                       ;No tray icon, duh
#NoEnv                                            ;Not using environment vars
#SingleInstance Force                             ;Use only a single instance

min:=0                                            ;Set default width
if 0>0                                            ;Check for arguments
  min=%1%                                         ;Set specified width

abr:="Address Band Root1"                         ;Window class name

IfWinExist ahk_class Shell_TrayWnd                ;Check if taskbar exists
{
  ControlGet, tv, Visible, ,  ToolbarWindow323    ;Is refresh button visible?

  ControlGetPos, tx,ty,tw,th, ToolbarWindow323    ;Get button width
  ControlGetPos, cx,cy,cw,ch, ComboBoxEx321       ;Get combobox width
  ControlGetPos, mx,my,mw,mh, msctls_progress321  ;Get address-bar width
  ControlGetPos, ax,ay,aw,ah, %abr%               ;Get rebar width

  {
    Control, Hide,, ToolbarWindow323              ;Hide the refresh button
    ControlGetPos, cx,cy,cw,ch, ComboBoxEx321     ;Get current combobox width

    if min>0                                      ;If a width was specified
      cw=%min%                                    ;Set the combobox to that width

    if tv                                         ;If the refresh button is visible
      cw:=cw+tw                                   ;Add its width to the combobox

    mw:=cw                                        ;Address-bar is same size
    aw:=cw+4                                      ;Rebar has a 2 pixle border

    ControlMove, %abr%, , , %aw% ,                ;Extend whole address-bar rebar
    ControlMove, msctls_progress321, , , %mw% ,   ;Extend address-bar
    ControlMove, ComboBoxEx321, , , %cw% ,        ;Extend combobox to include button
  }
}

答案2

无论如何,您都应该将其视为一个值得信赖的信息来源,但只是一个可以帮助您开始解决问题的事实。

我在注册表中搜索地址,并在 HKEY_CURRENT USER\Software\Classes\Local Settings 中找到以下注册表项:

@explorerframe.dll,-13137 REG_SZ &Address

之后我查找了“@explorerframe.dll”,发现了另一个注册表项:

MenuTextPUI REG_SZ @C:\Windows\System32\explorerframe.dll,-13137

如果您在注册表中搜索“MenuTextPUI”,您还会发现相同类型的链接和桌面键,它们都是任务栏中工具栏菜单的一部分,这让我认为我们有正确的值。(但可能完全错误)

您可能需要检查这些值,甚至使用 Resource Hacker 打开 explorerframe.dll 来查看您可以在其中找到什么。

也许从现在起注册专家可以帮助您。

希望这会有所帮助。

相关内容