Windows 7 taskbar as sidebar, minimum width fixed
One perfect working solution would be:
- create a ThinTaskbar.bat file
- enter the following content:
@echo off
echo ThinTaskbar
echo Please wait a few secconds...
net stop "UxSms"
net start "UxSms"
- save and close
- turn on the following taskbar options: lock and autohide
- execute batch script with administrator privileges
- done!
Now you can disable autohide, if you want. The script must be applied after each reboot.
Source: Youtube
Actually I asked a duplicate to this question, and it is still not solved Vertical taskbar on windows server 2008 too wide
But I can point you to this link:
http://answers.microsoft.com/en-us/windows/forum/windows_7-desktop/when-vertical-cannot-make-taskbar-as-thin-as/9ecf0b1c-e66d-497c-8c2b-5ef3965e2b59
Basically it says that the small icons are virtually wider than they appear (but not higher) and that this is by design. You cannot change the width of the taskbar below the virtual width of the icons.
The reason it allows a smaller 'hight' when horizontal is because each icon still has a wide width, so it stays easily target-able with a fingertip.
Maybe someone can use this to create a solution : )
I have a solution that I am using right now. I spent hours coding this and am very satisfied that it works perfectly for me. Go ahead and use it if you want, just credit me (drange17) if you wanna post this code online in forums. I would like to, in turn, credit Lexikos for the code for ConsoleSend.
Firstly, I placed a shortcut to Command Prompt called "cmd.lnk" in C:\Program Files. I go to this shortcut's properties>>shortcut tab>>advanced>>enable run as administrator.
Secondly, I downloaded AutoHotkey and put it to run at startup (place a shortcut to AutoHotkey in the Start Menu Startup folder), with the following code (which is definitely not very elegant, I'm sure someone can do better, but it does the job of narrowing the vertical taskbar for me):
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
}
Here's the resulting thin vertical taskbar:
Some people say that this behavior is by design in order to limit the minimum thickness for touch functionality: The taskbar is prevented from becoming too small to be utilized with a fingertip, so on the side of the screen it will keep this minimize size.
If you own a laptop, I found this temporary solution:
On power-up the taskbar appear on its default 'wide' size vertically at the leftside of the screen. To make the taskbar width narrower I just unplug the laptop ac-power source. Immediately the taskbar is resized (doesn't work if the taskbar is not set to 'auto-hide'). The new taskbar size is maintained 'permanently' during Windows 7 operation. I can even disable the 'auto-hide' setting at this point and the taskbar still maintain the narrow size. Of course I plug-in the ac-power back to the laptop to keep the battery charged. After shutting down my laptop and then later turning it back on for use I just do the same ac-power trick to resize the vertical taskbar again. I haven't tried this on other laptop/pc so I don't know if this trick work on all win7 systems.
EDIT
I might have found a direction that you could follow.
First, when setting the Windows theme to Classic, I noticed that the Start button was reduced in width, and that it then allows to reduce the width of the taskbar to that of the Start button. You might also need to turn off the clock & date.
This has started me thinking that width problem is caused by the Start button itself being too wide. So here are some links to customizing the Start button:
How to change the text of Start button in Windows 7
How to Change the Start Menu Button in Windows 7
This solution might or might not work, and it might or might not work with Aero, or only in Classic mode.
In any case: Happy hacking!