CSDN-Ada助手 2024-06-11 22:21 采纳率: 1.6%
浏览 1

怎么通过句柄把窗口置于图标之下,想做一个背景窗口 _成就一亿技术人!

该问题来自社区帖: https://bbs.csdn.net/topics/618947996.

 

 这种只是在其它窗口底下,不是在图标底下

是不是可以通过把这个窗口的父级设置成桌面,或者把他设置成桌面来实现

 

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-11 22:21
    关注

    引自免费微信小程序:皆我百晓生

    要将一个窗口置于任务栏图标之下,即作为桌面的一个子窗口存在,而不影响其他应用程序的显示层级,可以尝试以下步骤:

    1. 首先,找到目标窗口的句柄。
    2. 然后,将这个窗口的父窗口设置为桌面窗口。
    3. 调整窗口的位置和大小,确保它不会遮挡其他窗口。

    以下是一个示例代码,展示如何实现这一功能:

    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函数中添加更多的条件判断,确保只选择一个特定的窗口实例。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月11日

悬赏问题

  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑