題 如何縮小任務欄中的“地址”工具欄?


我喜歡能夠直接從我的任務欄運行命令。所以,我在我的新Windows 7系統上啟用了地址工具欄 - 就像我在舊的XP系統上一樣。但是,條形似乎有一個強制性的最小長度,比我更喜歡的長度。如果內存服務的話,它大約是XP中允許的最小大小的兩倍。

有什麼辦法可以通過註冊表項或其他方式調整這個最小長度嗎?

(注意:我也有一個相關的問題,關於 刪除刷新按鈕 在酒吧的盡頭。)

編輯:為清楚起見,我正在添加截圖。我想縮短的工具欄是下面圈出的工具欄,其中有一個空的文本輸入字段,其中包含一個下拉菜單和“刷新”按鈕。我目前將它放在快速啟動工具欄和任務欄之間。在系統托盤之前,任務欄的遠端是桌面工具欄。

enter image description here


2
2017-07-03 13:46


起源


這可能是你能得到的那麼小。它似乎有一個設定的最小長度。 - Phillip R.


答案:


應該 如果你確定,能夠縮小它 鎖定任務欄已關閉但是,當然,Windows資源管理器會根據您的發現強制設置最小長度。除了黑客攻擊 explorer.exe 為了找到(可能)硬編碼的最小長度的位置,除了使用反饋渠道向微軟投訴之外,沒有什麼可以做的。

如果你隱藏了 地址 文本標籤,然後你可以縮小一點(按標籤的寬度),但當然,你已經做到了。

一種可能的解決方案可能是使用第三方窗口操作工具直接編輯窗口,隱藏刷新按鈕並調整工具帶大小。

您也可以嘗試使用宏/熱鍵程序甚至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
  }
}

5
2017-07-05 17:51



快點給這個男人+50代表賞金!! (不是說他需要他們......)哈哈 - Rhyuk
@Rhyuk,哈哈,謝謝。不幸的是,我所能做的就是測試;沒有實際的解決方案。 :-(   為了記錄,我曾經在我的XP任務欄中設置了地址欄(我做的非常小),但我發現使用了 Win+R 只是更快更容易。 - Synetech


無論如何,您應該將此視為可靠的信息來源,但這只是一個可以幫助您開始解決問題的事實。

我在註冊表中搜索地址,並在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,以查看可以在其中找到的內容。

也許註冊大師可以從這裡幫助你。

希望這對某事有所幫助。


4
2017-07-05 20:01



我非常懷疑它可以通過註冊表設置。如果地址欄包含在您找到的DLL中(我不明白為什麼它不會),那麼您可以編輯地址欄資源,但由於它可能不是動態的,它會​​更多可能被硬編碼到函數中。 (即便如此,編輯系統文件的效率最低。) :-( - Synetech
我猜你是對的。我把這個問題作為“研究挑戰”;) - Rhyuk
嘗試破解它也會很有趣。 :-) - Synetech