我喜欢能够直接从任务栏运行命令。因此,我在新的 Windows 7 系统上启用了地址工具栏 - 就像我在旧的 XP 系统上一样。但是,该栏似乎有一个强制性的最小长度,比我希望的要长一点。如果我没记错的话,它的长度大约是 XP 允许的最小长度的两倍。
有什么方法可以调整这个最小长度吗?通过注册表项或其他方法?
(注:我还有一个相关问题,关于删除刷新按钮在酒吧的尽头。)
编辑:为了清晰起见,我添加了一张屏幕截图。我想缩短的工具栏是下面圈出的那个,带有一个空的文本输入字段,其中包含一个下拉菜单和“刷新”按钮。我目前将它放置在快速启动工具栏和任务栏之间。在任务栏的另一侧,系统托盘之前,是桌面工具栏。
答案1
你应该如果你确定的话可以缩小它锁定任务栏已关闭,但正如您所发现的,Windows 资源管理器当然会强制设置最小长度。除了通过 hackexplorer.exe
找到(可能是)硬编码的最小长度的位置外,您能做的不多,只能使用反馈渠道向 Microsoft 投诉。
如果你隐藏地址文本标签,那么您可以将其缩小一点(按标签的宽度),但当然,您已经这样做了。
一种可能的解决方案可能是使用第三方窗口操作工具直接编辑窗口,隐藏刷新按钮并调整工具带大小。
您还可以尝试使用宏/热键程序甚至 AutoHotkey/AutoIt/等来设置触发器和事件或仅仅编写脚本。
更新:
过去几天,我尝试编写一个程序(首先是 C++,然后是 AutoHotkey 脚本)来修复此问题。我学到了一些有趣的东西:
- 删除刷新按钮非常简单,就像扩展组合框以使用按钮所使用的空间(25 像素)一样。
- 拖动地址栏手柄重置刷新按钮和组合框大小换句话说,除非你锁定任务栏,否则 Explorer 会将地址栏重置为原来的状态,因为它是硬编码和动态的。
- 缩小地址(组合框)能完成,但即便如此,钢筋本身仍然保持相同的大小,最终任务栏上会出现一片空白。
换句话说,刷新按钮和最小尺寸是超级硬编码并不旨在提供定制。
也许有人会想这样做:
- 使用任务栏中的地址栏,并对其大小和按钮感到厌烦
- 找出硬编码的文件中的内容(Windows 7 中的 Explorer 文件比 XP 中的多得多)
- 找到硬编码的地方(希望只有一个变量,但可能性很小)
- 检查其他影响,例如触发大小的其他因素(Windows 的架构往往有很多交互)
- 编写破解/服务/驱动程序来解决这个问题(破解更容易,但更糟糕,因为在大多数更新后都必须重新应用它)
除非有人恰好对修复它有足够的兴趣,愿意不惜一切代价,否则你唯一的选择就是直接向微软投诉(但别忘了他们很快就要推出 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 来查看您可以在其中找到什么。
也许从现在起注册专家可以帮助您。
希望这会有所帮助。