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

  • 一:介绍要用到的库
  • 二:显示窗口的属性
    • 1. 获取所有窗口的句柄
    • 2.获取窗口的子窗口句柄
    • 3.获取句柄的标题
    • 4.获取窗口类名
  • 三、实际操作
    • 1.置顶和取消
    • 2.显示和隐藏窗口
  • 四、案例演示
    • 显示和隐藏托盘

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 = Falsefor i in hWnd_child_list:if get_clasname(i) ==  'TrayNotifyWnd':flag = Trueif 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)

Python----pywin32如何获取窗口句柄相关推荐

  1. python 打开exe获取窗口句柄_使用Python快速启动多个PC客户端

    点击关注,我们共同每天进步一点点! 作为一枚游戏测试,日常工作的时候,经常需要同时开着多个游戏账号进行测试. 以Unity打包出来的PC客户端为例,每次都需要双击运行exe程序,等着游戏启动后,因为同 ...

  2. python获取窗口句柄_Python+selenium 获取浏览器窗口坐标、句柄的方法

    1.0 获取浏览器窗口坐标 python目录可找到Webdriver.py 文件定义了get_window_rect()函数,可获取窗口的坐标和大小(长宽),但出现"Command not ...

  3. python 获取窗口句柄 模拟 点击按钮,Python获取浏览器窗口句柄过程解析

    句柄(handle)是C++程序设计中经常提及的一个术语.它并不是一种具体的.固定不变的数据类型或实体,而是代表了程序设计中的一个广义的概念.句柄一般是指获取另一个对象的方法--一个广义的指针,它的具 ...

  4. 易语言python模块_Python获取指定模块基址

    image 因为昨天研究FPS游戏时候,发现有个动态地址每次重启电脑都会不同,然后因为有过用C和易语言编写指定模块名获取基址的经验,所以打算用Python来试试 在网上搜索了一点资料,发现有吾爱有一篇 ...

  5. Python pywin32 整理 阴阳师自动化

    Python pywin32 整理 && 阴阳师自动化 前言 利用pywin32封装的一些常用功能(干货) 1. 获取当前坐标 2. 移动鼠标至指定坐标位 3. 鼠标左键单击 4. 获 ...

  6. Python PyWin32 模块

    PyWin32是Python在Windows平台上的一个扩展库,提供了访问Windows API.COM接口和其他Windows原生功能的功能.它允许开发者使用Python语言来编写与Windows操 ...

  7. delphi 鼠标获取窗口句柄_Python 脚本自动对窗口进行截图

    利用Python自带的win32api和win32con.win32gui等模块,我们能执行许多windows下的自动化操作.比如两个窗口的自动点击操作,从软件中的窗口复制文本到txt中,甚至是截图操 ...

  8. Python使用tpot获取最优模型并抽取最优模型模型参数

    Python使用tpot获取最优模型并抽取最优模型模型参数 目录 Python使用tpot获取最优模型并抽取最优模型模型参数 #数据划分

  9. Python使用tpot获取最优模型、将最优模型应用于交叉验证数据集(5折)获取数据集下的最优表现,并将每一折(fold)的预测结果、概率、属于哪一折与测试集标签、结果、概率一并整合输出为结果文件

    Python使用tpot获取最优模型.将最优模型应用于交叉验证数据集(5折)获取数据集下的最优表现,并将每一折(fold)的预测结果.概率.属于哪一折与测试集标签.结果.概率一并整合输出为结果文件 目 ...

最新文章

  1. mysql的判断更新_mysql判断记录是否存在,存在则更新,不存在则插入
  2. [论文翻译]Pedestrian Alignment Network for Large-scale Person Re-Identification
  3. oracle 微信公众号,关于微信公众号贴代码的方法
  4. 信息学奥赛一本通(1044:判断是否为两位数)
  5. Android 驱动(5)---MTK 平台分区表
  6. Java标识符和数据类型
  7. DNS无法解析IP_通过YouTube的封杀窥视DNS原理
  8. Kubernetes Pod 优先级和抢占
  9. 程序员面试金典——7.7第k个数(丑数)
  10. 二分查找时间复杂度分析
  11. 机顶盒固件简单做刷机包方法
  12. 9轴电子罗盘工作原理,校准与应用
  13. HCIE-Cloud题库
  14. linux无线网卡创建ap,Linux中使用hostapd创建无线AP及相关问题的处理方法
  15. puppet master/agent
  16. 【自然语言处理】【可解释性】Perturbed Masking:分析和解释BERT的无参数探针
  17. 如何使用虚拟机运行“小HomeKit”智汀家庭云
  18. JD京东爬虫-商品评论爬虫-----附源码
  19. [最优化]凸集的定义与常见凸集
  20. stay hungary stay foolish

热门文章

  1. 这届打工人因何离职?调查结果出人意料:薪酬不是第1位,企业文化重要10倍...
  2. C语言判断字符串包含
  3. [浏览器_1]-Windows 安装微软 Edge 浏览器以及配置 CSDN 浏览器助手
  4. Toastmasters会议小结
  5. 【无标题】secureCRT 连不上 linux 解决办法
  6. php 三种文件下载至浏览器的方法
  7. VBA ---- 单、多条件筛选
  8. “走进数字藏品,福利不停歇”活动第一期•第1场获奖公示
  9. 分享几个金融相关的网站
  10. html 仿京东收起展开,网页顶部自动下拉/收缩广告代码(仿京东)