前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python—-pywin32如何获取窗口句柄

Python—-pywin32如何获取窗口句柄

作者头像
全栈程序员站长
发布2022-09-16 08:13:07
3.1K0
发布2022-09-16 08:13:07
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

Python—-pywin32如何获取窗口句柄

halo,各位读者,本栏目开设一个围绕着“如何用Python来制作PC软件”展开。 当我们想用处理Windows的软件窗口时,常常会碰到想将窗口置顶、隐藏和显示等等,还有读者想将电脑托盘、任务栏等都隐藏的情况。本篇文章就是带领读者学习窗口句柄,并且如何应用Python带的win32 模块来读取界面中各个窗口的句柄。 希望通过此篇文章,可以让读者朋友跟着步骤操作,最终可以做出自己的小软件。

一:介绍要用到的库

代码语言:javascript
复制
import sys 
import win32gui
import win32con

二:显示窗口的属性

1. 获取所有窗口的句柄

代码语言:javascript
复制
def get_all_windows():
    hWnd_list = []
    win32gui.EnumWindows(lambda hWnd, param: param.append(hWnd), hWnd_list)
    print(hWnd_list)
    return hWnd_list
代码语言:javascript
复制
>>[66364, 66014, 65964, 65854, 65850, 65846, 65842, 65826, 65812, 65802, 65858, 65862, 65876, 65794, ....]

2.获取窗口的子窗口句柄

代码语言:javascript
复制
def get_son_windows(parent):
      hWnd_child_list = []
      win32gui.EnumChildWindows(parent, lambda hWnd, param: param.append(hWnd), hWnd_child_list)
      print(hWnd_child_list)
      return hWnd_child_list
代码语言:javascript
复制
>>[66364, 66014, 65964, 65854, ...]

3.获取句柄的标题

代码语言:javascript
复制
def get_title(hwnd):
    title = win32gui.GetWindowText(hwnd)
    print('窗口标题:%s' % (title))
    return title
代码语言:javascript
复制
>>窗口标题:设置

4.获取窗口类名

代码语言:javascript
复制
def get_clasname(hwnd):
    clasname = win32gui.GetClassName(hwnd)
    print('窗口类名:%s' % (clasname))
    return clasname
代码语言:javascript
复制
>>窗口类名:ApplicationFrameWindow

三、实际操作

1.置顶和取消

代码语言:javascript
复制
窗口置顶
代码语言:javascript
复制
def set_top(hwnd):
    win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 0, 0, 0, 0,
                          win32con.SWP_NOMOVE | win32con.SWP_NOACTIVATE | win32con.SWP_NOOWNERZORDER | win32con.SWP_SHOWWINDOW | win32con.SWP_NOSIZE)
代码语言:javascript
复制
窗口取消置顶
代码语言:javascript
复制
def set_down(hwnd):
    win32gui.SetWindowPos(hwnd, win32con.HWND_NOTOPMOST, 0, 0, 0, 0,
                          win32con.SWP_SHOWWINDOW | win32con.SWP_NOSIZE | win32con.SWP_NOMOVE)

2.显示和隐藏窗口

代码语言:javascript
复制
根据窗口名称获取句柄
代码语言:javascript
复制
#根据窗口名称获取句柄
def get_hwnd_from_name(name):
    hWnd_list = get_all_windows()
    for hwd in hWnd_list:
        title = get_title(hwd)
        if title == name:
            return hwd
代码语言:javascript
复制
窗口显示
代码语言:javascript
复制
def xianshi(name):
    hwd = get_hwnd_from_name(name)
    win32gui.ShowWindow(hwd, win32con.SW_SHOW)  
代码语言:javascript
复制
窗口隐藏
代码语言:javascript
复制
def yingcang(name):
    hwd = get_hwnd_from_name(name)
    win32gui.ShowWindow(hwd, win32con.SW_HIDE)

四、案例演示

显示和隐藏托盘

代码语言:javascript
复制
获取右下角托盘的任务句柄
代码语言:javascript
复制
#获取右下角托盘的任务句柄
def get_tuopan_hwd():
    handle = win32gui.FindWindow("Shell_TrayWnd", None)
    hWnd_child_list = get_son_windows(handle)[1:]
    tuopan_hwd_list = []
    flag = False
    for i in hWnd_child_list:
        if get_clasname(i) ==  'TrayNotifyWnd':
            flag = True
        if flag:
            tuopan_hwd_list.append(i)
    return tuopan_hwd_list
代码语言:javascript
复制
隐藏托盘
代码语言:javascript
复制
def yingcang(name=''):
    tuopan_hwd_list = get_tuopan_hwd()
    if name == '':
        for i in tuopan_hwd_list[:7] :#[:7]因为要保留一些基本的内容,也可以全部隐藏
            win32gui.ShowWindow(i, win32con.SW_HIDE)
    else:
        win32gui.ShowWindow(name, win32con.SW_HIDE)
代码语言:javascript
复制
显示托盘
代码语言:javascript
复制
def xianshi(name = ''):
    tuopan_hwd_list = get_tuopan_hwd()
    if name == '':
        for i in tuopan_hwd_list:
​
            win32gui.ShowWindow(i, win32con.SW_SHOW)
    else:
        win32gui.ShowWindow(name, win32con.SW_SHOW)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162549.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python—-pywin32如何获取窗口句柄
  • 一:介绍要用到的库
  • 二:显示窗口的属性
    • 1. 获取所有窗口的句柄
      • 2.获取窗口的子窗口句柄
        • 3.获取句柄的标题
          • 4.获取窗口类名
          • 三、实际操作
            • 1.置顶和取消
              • 2.显示和隐藏窗口
              • 四、案例演示
                • 显示和隐藏托盘
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档