【问题标题】:Hide Windows start orb in python (3.2)在 python (3.2) 中隐藏 Windows 启动 orb
【发布时间】:2013-05-20 12:21:22
【问题描述】:

我正在创建一个程序来替换 Python 中的 Windows 开始菜单。我设法找到了一种隐藏任务栏的方法,如下所示,但我找不到隐藏开始球(Windows 按钮)的方法。

import ctypes
from ctypes import wintypes

FindWindow = ctypes.windll.user32.FindWindowA
FindWindow.restype = wintypes.HWND
FindWindow.argtypes = [
    wintypes.LPCSTR, #lpClassName
    wintypes.LPCSTR, #lpWindowName
]

SetWindowPos = ctypes.windll.user32.SetWindowPos
SetWindowPos.restype = wintypes.BOOL
SetWindowPos.argtypes = [
    wintypes.HWND, #hWnd
    wintypes.HWND, #hWndInsertAfter
    ctypes.c_int,  #X
    ctypes.c_int,  #Y
    ctypes.c_int,  #cx
    ctypes.c_int,  #cy
   ctypes.c_uint, #uFlags
] 

TOGGLE_HIDEWINDOW = 0x80
TOGGLE_UNHIDEWINDOW = 0x40

def hide_taskbar():
    handleW1 = FindWindow(b"Shell_traywnd", b"")
    SetWindowPos(handleW1, 0, 0, 0, 0, 0, TOGGLE_HIDEWINDOW)

def unhide_taskbar():
    handleW1 = FindWindow(b"Shell_traywnd", b"")
    SetWindowPos(handleW1, 0, 0, 0, 0, 0, TOGGLE_UNHIDEWINDOW)

【问题讨论】:

    标签: python windows ctypes startmenu


    【解决方案1】:

    您可以使用FindWindow 和用于orb 的类原子0xC017 来获取起始球的句柄。然后使用ShowWindowSetWindowPos 隐藏任务栏和球体。例如:

    import ctypes
    from ctypes import wintypes
    
    user32 = ctypes.WinDLL("user32")
    
    SW_HIDE = 0
    SW_SHOW = 5
    
    START_ATOM = wintypes.LPCWSTR(0xC017) # i.e. MAKEINTATOM(...)
    
    user32.FindWindowW.restype = wintypes.HWND
    user32.FindWindowW.argtypes = (
        wintypes.LPCWSTR, # lpClassName
        wintypes.LPCWSTR) # lpWindowName
    
    user32.ShowWindow.argtypes = (
        wintypes.HWND, # hWnd
        ctypes.c_int)  # nCmdShow
    
    def hide_taskbar():
        hWndTray = user32.FindWindowW(u"Shell_traywnd", None)
        user32.ShowWindow(hWndTray, SW_HIDE)
        hWndStart = user32.FindWindowW(START_ATOM, None)
        if hWndStart:
            user32.ShowWindow(hWndStart, SW_HIDE)
    
    def unhide_taskbar():
        hWndTray = user32.FindWindowW(u"Shell_traywnd", None)
        user32.ShowWindow(hWndTray, SW_SHOW)
        hWndStart = user32.FindWindowW(START_ATOM, None)
        if hWndStart:
            user32.ShowWindow(hWndStart, SW_SHOW)
    

    【讨论】:

    • 经过测试并确认可以正常工作。开始按钮消失。 但是我会注意到,当我最初使用 Classic Shell 及其替换按钮对其进行测试时,此方法不起作用。如果用户有另一个开始菜单,您将不得不单独处理。
    • 第二个说明:使用alt-tab时,显示桌面时会出现按钮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多