如何从命令行自动隐藏任务栏
How to auto-hide the taskbar from the command line
有人知道如何通过命令行或其他方法在 windows 7 中自动隐藏任务栏吗?
这是一个小的 C 程序,可以切换任务栏 hidden/shown 的状态 window。请注意,当它隐藏时,它实际上完全从屏幕上消失了(它不是自动隐藏模式)。
#include <windows.h>
int main() {
HWND hwnd = FindWindow("Shell_traywnd", "");
if (IsWindowVisible(hwnd))
SetWindowPos(hwnd,0,0,0,0,0,SWP_HIDEWINDOW);
else
SetWindowPos(hwnd,0,0,0,0,0,SWP_SHOWWINDOW);
return 0;
}
使用 SHAppBarMessage。这一个切换自动隐藏状态。
#include <windows.h>
#include <shellapi.h>
// This isn't defined for me for some reason.
#ifndef ABM_SETSTATE
#define ABM_SETSTATE 0x0000000A
#endif
int main() {
APPBARDATA abd = {sizeof abd};
UINT uState = (UINT) SHAppBarMessage(ABM_GETSTATE, &abd);
LPARAM param = uState & ABS_ALWAYSONTOP;
if (uState & ABS_AUTOHIDE)
abd.lParam = param;
else
abd.lParam = ABS_AUTOHIDE | param;
SHAppBarMessage(ABM_SETSTATE, &abd);
return 0;
}
在 cmd 提示符或 .cmd 中自动隐藏任务栏。 .bat 文件:
Windows 7 (StuckRects2)
powershell -command "&{$p='HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2';$v=(Get-ItemProperty -Path $p).Settings;$v[8]=3;&Set-ItemProperty -Path $p -Name Settings -Value $v;&Stop-Process -f -ProcessName explorer}"
Windows 10 (StuckRects3)
powershell -command "&{$p='HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3';$v=(Get-ItemProperty -Path $p).Settings;$v[8]=3;&Set-ItemProperty -Path $p -Name Settings -Value $v;&Stop-Process -f -ProcessName explorer}"
说明
存储此值的注册表项还存储了一些其他设置。由于我们只想更改该注册表设置的位置 9($v[8]
在 cmd 中),我们需要保留其他设置。
通常从cmd,使用reg add
命令修改注册表就足够了,但我们使用powershell,因为它可以很容易地保留存储在同一注册表项下的其他设置。
还需要重新启动 Explorer 才能使更改生效。我们使用 Stop-Process
因为 Windows Explorer 停止时会自动重新启动。
注意:将上述命令中的 $v[8]=3
更改为 $v[8]=2
以撤消此更改(如果您希望任务栏始终可见)。
有人知道如何通过命令行或其他方法在 windows 7 中自动隐藏任务栏吗?
这是一个小的 C 程序,可以切换任务栏 hidden/shown 的状态 window。请注意,当它隐藏时,它实际上完全从屏幕上消失了(它不是自动隐藏模式)。
#include <windows.h>
int main() {
HWND hwnd = FindWindow("Shell_traywnd", "");
if (IsWindowVisible(hwnd))
SetWindowPos(hwnd,0,0,0,0,0,SWP_HIDEWINDOW);
else
SetWindowPos(hwnd,0,0,0,0,0,SWP_SHOWWINDOW);
return 0;
}
使用 SHAppBarMessage。这一个切换自动隐藏状态。
#include <windows.h>
#include <shellapi.h>
// This isn't defined for me for some reason.
#ifndef ABM_SETSTATE
#define ABM_SETSTATE 0x0000000A
#endif
int main() {
APPBARDATA abd = {sizeof abd};
UINT uState = (UINT) SHAppBarMessage(ABM_GETSTATE, &abd);
LPARAM param = uState & ABS_ALWAYSONTOP;
if (uState & ABS_AUTOHIDE)
abd.lParam = param;
else
abd.lParam = ABS_AUTOHIDE | param;
SHAppBarMessage(ABM_SETSTATE, &abd);
return 0;
}
在 cmd 提示符或 .cmd 中自动隐藏任务栏。 .bat 文件:
Windows 7 (StuckRects2)
powershell -command "&{$p='HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2';$v=(Get-ItemProperty -Path $p).Settings;$v[8]=3;&Set-ItemProperty -Path $p -Name Settings -Value $v;&Stop-Process -f -ProcessName explorer}"
Windows 10 (StuckRects3)
powershell -command "&{$p='HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3';$v=(Get-ItemProperty -Path $p).Settings;$v[8]=3;&Set-ItemProperty -Path $p -Name Settings -Value $v;&Stop-Process -f -ProcessName explorer}"
说明
存储此值的注册表项还存储了一些其他设置。由于我们只想更改该注册表设置的位置 9($v[8]
在 cmd 中),我们需要保留其他设置。
通常从cmd,使用reg add
命令修改注册表就足够了,但我们使用powershell,因为它可以很容易地保留存储在同一注册表项下的其他设置。
还需要重新启动 Explorer 才能使更改生效。我们使用 Stop-Process
因为 Windows Explorer 停止时会自动重新启动。
注意:将上述命令中的 $v[8]=3
更改为 $v[8]=2
以撤消此更改(如果您希望任务栏始终可见)。