Windows 7任务栏为边栏,最小宽度固定


20

这听起来像是一个琐碎且不必要的问题,但它使我越来越烦。如果在Windows 7中为任务栏选择“小图标”,并且任务栏位于屏幕的顶部或底部,则任务栏将变得非常小。

水平任务栏的屏幕截图

但是由于我有一个宽屏显示器,所以我习惯将任务栏放在屏幕的侧面,因为它可以更有效地利用空间。但是我无法将任务栏缩小到一定水平,并且它仍然很宽。

垂直任务栏的屏幕截图

可能有一个注册表项可以设置为与屏幕底部或顶部的高度相同的宽度吗?

(PS:MinWidth技巧在这里无济于事。)


2
请注意,如果锁定任务栏,它将不会显示这些夹点,这会使窗口按钮更接近球体。
nhinkle

Answers:


12

一种完美的工作解决方案是:

  • 创建ThinTaskbar.bat文件
  • 输入以下内容:

@echo off
echo ThinTaskbar
echo Please wait a few secconds...
net stop "UxSms"
net start "UxSms"

  • 保存并关闭
  • 打开以下任务栏选项:锁定和自动隐藏
  • 以管理员权限执行批处理脚本
  • 完成!

现在,您可以根据需要禁用自动隐藏。每次重新启动后必须应用脚本。

资料来源:Youtube


欢呼,一个有效的答案!
Barfieldmv 2012年

刚找到您的答案,对您很有帮助。从其他地方阅读,如果将此.bat文件添加到%AppData%\ Microsoft \ Windows \ Start Menu \ Programs \ Startup \目录,则它应在启动时执行.bat,而不必手动执行。
WebDevNewbie 2013年

这对我不起作用。它显然没有做任何事情,但是cmd表示它可以停止并成功启动。即使从服务面板。任何的想法?
卡尔斯·阿尔科利亚

3

其实我问这个问题的重复,它仍然没有解决Windows Server 2008上的垂直任务栏太宽

但我可以指出您此链接:

http://answers.microsoft.com/zh-CN/windows/forum/windows_7-desktop/when-vertical-cannot-make-taskbar-as-thin-as/9ecf0b1c-e66d-497c-8c2b-5ef3965e2b59

基本上,它说的是小图标实际上比它们看上去宽(但不是更高),这是设计使然。您不能在图标的虚拟宽度下方更改任务栏的宽度。

当水平时,它允许较小的“高”的原因是,由于每个图标仍具有较宽的宽度,因此可以通过指尖轻松保持可定位目标。

也许有人可以使用它来创建解决方案:)


3

我有一个正在使用的解决方案。我花了几个小时对此进行编码,并且非常满意它对我来说非常有效。如果需要,请继续使用它,如果您想在论坛上在线发布此代码,请相信我(drange17)。反过来,我想感谢Lexikos提供的ConsoleSend代码。

首先,我在C:\ Program Files中放置了一个名为“ cmd.lnk”的命令提示符快捷方式。我转到此快捷方式的属性>>快捷方式选项卡>>高级>>启用以管理员身份运行。

其次,我下载了AutoHotkey并使其在启动时运行(在“开始”菜单“启动”文件夹中放置AutoHotkey的快捷方式),并带有以下代码(这绝对不是很好,我确定有人可以做得更好,但确实如此)为我缩小垂直任务栏的工作):

Sleep, 15000
SendInput {LWin Down}r{LWin Up}
IfWinExist, Run
    WinActivate
    Sleep, 500
    SendInput {Raw}RunDll32.exe shell32.dll,Options_RunDLL 1
    SendInput {Enter}
WinWait, Taskbar and Start Menu Properties
    SendInput {Tab}{Space}{Enter}
WinWaitClose
    Run C:\Program Files\cmd.lnk
WinWait, Administrator: cmd ahk_class ConsoleWindowClass
winwaitactive Administrator: cmd ahk_class ConsoleWindowClass
ConsoleSend("net stop uxsms", "ahk_class ConsoleWindowClass")
ConsoleSend("`r", "ahk_class ConsoleWindowClass")
Sleep, 3000
ConsoleSend("net start uxsms", "ahk_class ConsoleWindowClass")
ConsoleSend("`r", "ahk_class ConsoleWindowClass")
Sleep, 3000
ConsoleSend("exit", "ahk_class ConsoleWindowClass")
ConsoleSend("`r", "ahk_class ConsoleWindowClass")
WinWaitClose
SendInput {LWin Down}r{LWin Up}
IfWinExist, Run
    WinActivate
Sleep, 500
SendInput {Raw}RunDll32.exe shell32.dll,Options_RunDLL 1
SendInput {Enter}
WinWait, Taskbar and Start Menu Properties
SendInput {Tab}{Space}{Enter}
Run outlook.exe
ConsoleSend(text, WinTitle="", WinText="", ExcludeTitle="", ExcludeText="")
{
    WinGet, pid, PID, %WinTitle%, %WinText%, %ExcludeTitle%, %ExcludeText%
    if !pid
        return false, ErrorLevel:="window"
    if !DllCall("AttachConsole", "uint", pid)
        return false, ErrorLevel:="AttachConsole"
    hConIn := DllCall("CreateFile", "str", "CONIN$", "uint", 0xC0000000
                , "uint", 0x3, "uint", 0, "uint", 0x3, "uint", 0, "uint", 0)
    if hConIn = -1
        return false, ErrorLevel:="CreateFile"
    VarSetCapacity(ir, 24, 0)       ; ir := new INPUT_RECORD
    NumPut(1, ir, 0, "UShort")      ; ir.EventType := KEY_EVENT
    NumPut(1, ir, 8, "UShort")      ; ir.KeyEvent.wRepeatCount := 1
    Loop, Parse, text ; for each character in text
    {
        NumPut(Asc(A_LoopField), ir, 14, "UShort")
        NumPut(true, ir, 4, "Int")  ; ir.KeyEvent.bKeyDown := true
        gosub ConsoleSendWrite
        NumPut(false, ir, 4, "Int") ; ir.KeyEvent.bKeyDown := false
        gosub ConsoleSendWrite
        Sleep, 10
    }
    gosub ConsoleSendCleanup
    return true
    ConsoleSendWrite:
        if ! DllCall("WriteConsoleInput", "uint", hconin, "uint", &ir, "uint", 1, "uint*", 0)
        {
            gosub ConsoleSendCleanup
            return false, ErrorLevel:="WriteConsoleInput"
        }
    return
    ConsoleSendCleanup:
        if (hConIn!="" && hConIn!=-1)
            DllCall("CloseHandle", "uint", hConIn)
        DllCall("FreeConsole")
    return
}

这是最终的瘦垂直任务栏:

在此处输入图片说明


1
看起来很有希望,但是您可以添加一些评论并描述您的工作吗?
scigor 2011年

没为我跑。到底为什么要运行Outlook?是解决方案的一部分,还是您只想运行一些可以创建新窗口的应用程序?我可以自动将某些键发送到任务栏,然后它打开了cmd.exe,但没有键入任何内容,尽管此脚本似乎正在尝试执行该操作。我确实只留下了鼠标和键盘一分钟,直到完成。娜达 有指针吗?
tgkprog 2014年

2

有人说,此行为是设计使然,目的是限制触摸功能的最小厚度:防止任务栏变得太小以至于无法用指尖使用,因此在屏幕侧面,它将保持此最小尺寸。

如果您有一台笔记本电脑,我会找到以下临时解决方案:

开机时,任务栏将以其默认的“宽”尺寸垂直出现在屏幕左侧。为了缩小任务栏的宽度,我只是拔下了笔记本电脑的交流电源。立即调整任务栏的大小(如果任务栏未设置为“自动隐藏”,则该按钮不起作用)。在Windows 7操作期间,新任务栏的大小将“永久”保持。我什至可以在此时禁用“自动隐藏”设置,并且任务栏仍保持较小的尺寸。当然,我将交流电源插回笔记本电脑以保持电池充电。关闭笔记本电脑,然后再将其打开使用后,我只需执行相同的交流电源技巧即可再次调整垂直任务栏的大小。我没有在其他笔记本电脑/ PC上尝试过此操作,所以我没有

编辑

我可能已经找到了您可以遵循的方向。

首先,将Windows主题设置为“经典”时,我注意到“开始”按钮的宽度减小了,然后它允许将任务栏的宽度减小为“开始”按钮的宽度。您可能还需要关闭时钟和日期。

这使我开始想到宽度问题是由“开始”按钮本身太宽引起的。因此,这里有一些自定义“开始”按钮的链接:

如何在Windows 7 中更改开始按钮的文本如何在Windows 7
中更改开始菜单按钮

此解决方案可能会或可能不会起作用,并且可能会或可能不会与Aero一起工作,或者仅在经典模式下起作用。
无论如何:祝您黑客愉快!


是的,我也听说过,而且您可以从评论中看到sagars“ answear”,您可以临时更改大小,但如果可以临时更改,则必须有一个技巧可以永久地进行。那就是我在寻找的东西;)赏金不是白费。
scigor 2010年

您好尝试过,但没有成功。但是我认为您正在朝着正确的方向前进。我将其更改为较小的按钮,但事实是,例如,当您杀死explorer.exe时,仍然看到不可用的位置。例如,当您尝试使用屏幕的边缘时,您发现在杀死explorer.exe之后,它仍然位于之前的位置,而不是位于屏幕边界。因此,显然其他一些配置/文件/注册表必须更改。
scigor

@ inf.ig.sh:我发现一个产品用一个小的位图代替了整个“开始”按钮,但没有成功。因此,我相信宽度是内置在任务栏中的。我知道一个事实,即MS开发人员一直在持续开发任务栏,直到最后一刻为止,并且为此在任务栏软件本身中内置了许多常量,而不是将其作为注册表参数。我认为目前可以在“经典”模式下保存的少量像素是最大(yick)。否则,似乎只有暂时的解决方案是可能的,至少直到Windows 8出现为止。
harrymc 2010年

赏金计划的时间不多了,因此,既然您在这个问题上投入了最大的精力,您将获得赏金,如果将来仍然有解决方案,
它将悬而未决

2

我是自动热键的忠实粉丝,我花了一些时间才找到解决此问题的最简单方法。我首先尝试了直接注册表设置更改,但是这些更改要求重新启动explorer.exe,这是我不喜欢的,因此最终,在尝试了许多失败之后,我最终还是这样做了。如果需要任何改进,我将更新pastebin中的代码。

我制作了一个自动热键代码,使您的Windows 7侧面任务栏带有小图标1图标变薄:

^+t::  
        ; GinThinSideTaskbar
        ; by giny8i8
        ; v1p01 at 2014-06-21
        ; If you use the Windows 7 Taskbar on the side of your screen, with smal icons, this makes it look 1 icon thin instead of the default double size.
        ; Assumptions: The taskbar is not hidden when you run this code (UxSms restart thinners the taskbar only if the taskbar is hidden)

        TaskbarToggler() ;Hide Taskbar
        Sleep 1000      ;Wait a little
        RunWait,sc stop "UxSms" ;Stop "Desktop Window Manager Session Manager Service" service.
        RunWait,sc start "UxSms" ;Start "Desktop Window Manager Session Manager Service" service.
        Sleep 1000      ;Wait a little
        TaskbarToggler() ;Show Taskbar again

        TaskbarToggler()
        {
                Run % "RunDll32.exe shell32.dll,Options_RunDLL 1" ;Open "Taskbar and Start Menu Properties" window
                WinWait, Taskbar and Start Menu Properties ;Wait for the window to open
                SendInput {Tab}{Space}{Enter} ;Togle Taskbar hiding
        }
        return

我也将其放在http://pastebin.com/4upmWETQ上

随时使用和分发,请发表反馈!giny8i8


1

可能有一种方法可以通过使用其他Windows样式来解决。您可以使用诸如调优之类的工具来下载和安装其他样式,也可以使用一些工具来设计自己的样式。也许有可能创建一个没有此问题的样式。


没有Windows样式在这里
无济于事

1

我知道这是一个老问题,但是您可以使用称为7+ Taskbar Tweaker的工具来完成此任务

安装并运行后,如果右键单击任务栏图标并打开“高级选项”,则有一个名为“ no_width_limit”的选项。启用该选项并应用新配置。

启用此功能后,如果您解锁任务栏,则现在应该能够使用鼠标相对于图标大小减小任务栏的宽度。

之后,随时锁定任务栏。我相信这是最完整的解决方案。

屏幕截图

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.