【问题标题】:Make a window transparent using Win32?使用 Win32 使窗口透明?
【发布时间】:2011-05-31 18:09:54
【问题描述】:

使用 Python Win32 扩展,如何使 Windows XP 上的任意窗口透明?

【问题讨论】:

    标签: python windows winapi pywin32 pywin


    【解决方案1】:

    SetLayeredWindowsAttributes 示例:

    import win32gui
    import win32con
    import winxpgui
    import win32api
    import subprocess
    import time
    
    subprocess.Popen("notepad.exe", shell=True)
    time.sleep(1)
    hwnd = win32gui.FindWindow(None, "New file - metapad")  ## The caption of my empty notepad (MetaPad)
    
    win32gui.SetWindowLong (hwnd, win32con.GWL_EXSTYLE, win32gui.GetWindowLong (hwnd, win32con.GWL_EXSTYLE ) | win32con.WS_EX_LAYERED )
    winxpgui.SetLayeredWindowAttributes(hwnd, win32api.RGB(0,0,0), 180, win32con.LWA_ALPHA)
    

    【讨论】:

    • 您可以使用win32gui.SetLayeredWindowAttributes() 消除winxpgui 导入
    【解决方案2】:

    您可以使用SetLayeredWindowAttributes WIN32 API函数来创建透明窗口:

    BOOL WINAPI SetLayeredWindowAttributes(
      __in  HWND hwnd,
      __in  COLORREF crKey,
      __in  BYTE bAlpha,
      __in  DWORD dwFlags
    );
    

    Here 是一个代码示例,可用于包装 WIN32 API 函数以设置透明度。

    【讨论】:

      【解决方案3】:
      import win32gui
      import win32con
      import winxpgui
      import win32api
      import subprocess
      import time
      
      subprocess.Popen("notepad.exe", shell=True)
      time.sleep(1)
      hwnd = win32gui.FindWindow(None, "New file - metapad")  ## The caption of my empty notepad (MetaPad)
      
      win32gui.SetWindowLong (hwnd, win32con.GWL_EXSTYLE, win32gui.GetWindowLong (hwnd, win32con.GWL_EXSTYLE ) | win32con.WS_EX_LAYERED )
      winxpgui.SetLayeredWindowAttributes(hwnd, win32api.RGB(0,0,0), 180, win32con.LWA_ALPHA)
      

      这不适用于 Windows 10。

      【讨论】:

      • 是的。我刚刚测试了它。事实上,它甚至可以在 Windows 11 上运行
      猜你喜欢
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 2011-04-27
      • 2015-08-15
      • 2011-02-25
      相关资源
      最近更新 更多