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 数据量少可以用MK趋势分析吗
  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中