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

Python—-pywin32如何获取窗口句柄Python—-pywin32如何获取窗口句柄一:介绍要用到的库二:显示窗口的属性1.获取所有窗口的句柄2.获取窗口的子窗口句柄3.获取句柄的标题4.获取窗口类名三、实际操作1.置顶和取消2.显示和隐藏窗口四、案例演示显示和隐藏托盘halo,各位读者,本栏目开设一个围绕着“如何用Python来制作PC软件”展开。当我们想用处理Windows的软件窗口时,常常会碰到想将窗口置顶、隐藏和显示等等,还有读者想将电脑托盘、任务栏等都隐藏的情况。本篇文章就是带领读者学习窗口句柄,并且如何应用Python带的

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

halo,各位读者,本栏目开设一个围绕着“如何用Python来制作PC软件”展开。

当我们想用处理Windows的软件窗口时,常常会碰到想将窗口置顶、隐藏和显示等等,还有读者想将电脑托盘、任务栏等都隐藏的情况。本篇文章就是带领读者学习窗口句柄,并且如何应用Python带的win32 模块来读取界面中各个窗口的句柄。

希望通过此篇文章,可以让读者朋友跟着步骤操作,最终可以做出自己的小软件。

一:介绍要用到的库

import sys 
import win32gui
import win32con

二:显示窗口的属性

1. 获取所有窗口的句柄

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

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

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
>>[66364, 66014, 65964, 65854, ...]

3.获取句柄的标题

def get_title(hwnd):
    title = win32gui.GetWindowText(hwnd)
    print('窗口标题:%s' % (title))
    return title
>>窗口标题:设置

4.获取窗口类名

def get_clasname(hwnd):
    clasname = win32gui.GetClassName(hwnd)
    print('窗口类名:%s' % (clasname))
    return clasname
>>窗口类名:ApplicationFrameWindow

三、实际操作

1.置顶和取消

窗口置顶
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)
窗口取消置顶
def set_down(hwnd):
    win32gui.SetWindowPos(hwnd, win32con.HWND_NOTOPMOST, 0, 0, 0, 0,
                          win32con.SWP_SHOWWINDOW | win32con.SWP_NOSIZE | win32con.SWP_NOMOVE)

2.显示和隐藏窗口

根据窗口名称获取句柄
#根据窗口名称获取句柄
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
窗口显示
def xianshi(name):
    hwd = get_hwnd_from_name(name)
    win32gui.ShowWindow(hwd, win32con.SW_SHOW)  
窗口隐藏
def yingcang(name):
    hwd = get_hwnd_from_name(name)
    win32gui.ShowWindow(hwd, win32con.SW_HIDE)

四、案例演示

显示和隐藏托盘

获取右下角托盘的任务句柄
#获取右下角托盘的任务句柄
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
隐藏托盘
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)
显示托盘
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.net/162549.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ETL是什么_ETL平台

    ETL是什么_ETL平台一、ETL发展的背景信息是现代企业的重要资源,是企业运用科学管理、决策分析的基础。据统计,数据量每经过2-3年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占总数据量的2%~4

    2022年8月6日
    6
  • perl正则表达式匹配中文

    perl正则表达式匹配中文perl正则表达式匹配中文:/[^u4E00-u9FA5]/js中正则表达式匹配中文:match(/[\u4E00-\u9FA5]/)

    2022年5月31日
    36
  • height:100vh的应用

    height:100vh的应用今天改移动端页面样式的时候因为height:100vh,导致我想超出部分滚动页面的效果没有做出来。就查查这玩意是啥意思。别人解释的height:100vhvh就是当前屏幕可见高度的1%,也就是说height:100vh==height:100%;但是当元素没有内容时候,设置height:100%,该元素不会被撑开,此时高度为0,但是设置height:100vh,该元素会被撑开屏幕高…

    2022年5月27日
    33
  • 怎样查看MySql数据库物理文件存放位置

    怎样查看MySql数据库物理文件存放位置

    2022年2月9日
    56
  • 三维浮雕软件 linux,做3D浮雕圆雕模型用哪个软件好?3Dcoat这款软件是不错的选择。…「建议收藏」

    三维浮雕软件 linux,做3D浮雕圆雕模型用哪个软件好?3Dcoat这款软件是不错的选择。…「建议收藏」#以下是我整理了这款软件的几个优点:优点1,先进的智能转化功能,可以把彩色的平面图片生成3D浮雕模型图,也可以把灰度图生成3D浮雕图,例如在木雕家具效果图设计行业,3DCAOT制作的家具设计贴浮雕效果图优点2,它有先进的局部精细化功能,特别是用于表面精细的浮雕类工艺品设计,可以在产品的表面制作各种效果的浮雕效果。优点3,用于3D扫描抄数的后期处理,修图,对于扫描文件的表面处理,精修等。优点4,指定…

    2025年9月14日
    7
  • CAD制图系列之中心线画法[通俗易懂]

    CAD制图系列之中心线画法[通俗易懂]我们将做个简单的笔记:CAD中心线怎么画CAD中心线一般为点划线,画法很简单,首先先设置线型一般步骤为:1、首先,打开CAD,点击进入图层特性管理器2、在图层特性管理器中点击线型进行设置3

    2022年8月3日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号