该问题来自社区帖: https://bbs.csdn.net/topics/618947996.
这种只是在其它窗口底下,不是在图标底下
是不是可以通过把这个窗口的父级设置成桌面,或者把他设置成桌面来实现
这种只是在其它窗口底下,不是在图标底下
是不是可以通过把这个窗口的父级设置成桌面,或者把他设置成桌面来实现
引自免费微信小程序:皆我百晓生
要将一个窗口置于任务栏图标之下,即作为桌面的一个子窗口存在,而不影响其他应用程序的显示层级,可以尝试以下步骤:
以下是一个示例代码,展示如何实现这一功能:
import win32gui, win32con
# 获取桌面窗口的句柄
h_desktop = win32gui.GetDesktopWindow()
# 定义一个函数,用于遍历所有窗口并找到目标窗口
def find_window(hwnd, param):
if win32gui.GetWindowText(hwnd) == "Video":
param.append(hwnd)
# 存储找到的窗口句柄
target_hwnds = []
win32gui.EnumWindows(find_window, target_hwnds)
# 遍历找到的所有窗口,将它们的父窗口设置为桌面
for hwnd in target_hwnds:
# 设置窗口的父窗口为桌面
win32gui.SetParent(hwnd, h_desktop)
# 将窗口置于最底层,并保持其原位置和大小
win32gui.SetWindowPos(hwnd, win32con.HWND_BOTTOM, 0, 0, 0, 0,
win32con.SWP_NOMOVE | win32con.SWP_NOSIZE | win32con.SWP_NOACTIVATE)
这段代码首先获取桌面窗口的句柄,然后遍历所有窗口,寻找标题为"Video"的目标窗口。一旦找到目标窗口,就将其父窗口设置为桌面窗口,并调整其位置使其位于所有窗口之下。
注意,将窗口的父窗口设置为桌面窗口后,可能需要额外处理窗口的显示逻辑,因为此时窗口的行为会更像一个桌面小工具,而不是普通程序窗口。例如,可能需要手动管理窗口的显示区域,避免与屏幕边缘或其他固定元素重叠。
如果目标窗口有多个实例,上述代码会将所有匹配的窗口都进行相同的操作。如果只需要操作单个窗口,可以在find_window
函数中添加更多的条件判断,确保只选择一个特定的窗口实例。