【发布时间】:2011-05-31 18:09:54
【问题描述】:
使用 Python Win32 扩展,如何使 Windows XP 上的任意窗口透明?
【问题讨论】:
标签: python windows winapi pywin32 pywin
使用 Python Win32 扩展,如何使 Windows XP 上的任意窗口透明?
【问题讨论】:
标签: python windows winapi pywin32 pywin
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 导入
您可以使用SetLayeredWindowAttributes WIN32 API函数来创建透明窗口:
BOOL WINAPI SetLayeredWindowAttributes(
__in HWND hwnd,
__in COLORREF crKey,
__in BYTE bAlpha,
__in DWORD dwFlags
);
Here 是一个代码示例,可用于包装 WIN32 API 函数以设置透明度。
【讨论】:
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。
【讨论】: