如何从命令行自动隐藏任务栏

bla*_*man 7 windows cmd taskbar windows-7

有谁知道如何通过命令行或其他方法自动隐藏Windows 7中的任务栏?

gre*_*ade 21

从 cmd 提示符或 .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}"

解释

存储此值的注册表项还存储了许多其他设置。由于我们只想更改$v[8]该注册表设置的位置 9(在 cmd 中),因此我们需要保留其他设置。

通常在 cmd 中,使用reg add命令修改注册表就足够了,但我们使用 powershell,因为它可以轻松保留存储在同一注册表项下的其他设置。

还需要重新启动 Explorer 才能接受更改。我们使用Stop-Process是因为 Windows 在它停止时会自动重新启动资源管理器。

注意:在上面的命令中更改$v[8]=3$v[8]=2以撤消此更改(如果您希望任务栏始终可见)。

  • 这应该被接受为正确答案,因为它不依赖于外部程序。你也完美地解释了背后的原因!Windows 7 版本也可以在 Windows 8.1 上正常运行。 (2认同)

oog*_*oga 8

这是一个小C程序,它将切换任务栏窗口的隐藏/显示状态.请注意,当它被隐藏时,它实际上已完全从屏幕上消失(它不在自动隐藏模式下).

#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;
}
Run Code Online (Sandbox Code Playgroud)

使用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;
}
Run Code Online (Sandbox Code Playgroud)

  • 这依赖于未记录的行为,并且不适用于多个监视器.使用SHAppBarMessage. (3认同)