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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab中axis的使用

    matlab中axis的使用%提示disp('该功能练习axis功能');%初始化快捷式数组x=-2*pi:pi/20:2*pi;y=sin(x);plot(x,y);title('sin(x)图形

    2022年7月3日
    20
  • Java安全之Unsafe类

    Java安全之Unsafe类0x00前言前面使用到的一些JNI编程和Javaagent等技术,其实在安全里面的运用非常的有趣和微妙,这个已经说过很多次。后面还会发现一些比较有意思的技术,比如AS

    2021年12月12日
    51
  • 不会部署并调试SpringBoot源码?一看必会IDEA操作[通俗易懂]

    不会部署并调试SpringBoot源码?一看必会IDEA操作[通俗易懂]SpringBoot现在这么火几乎是面试必问,如果你能说出点源码是如果实现的,那么面试官跟定对你刮目相看。但是好多同学往往在部署SpringBoot源码的时候,由于找不到门路而选择放弃。本篇博客通过简单方式教你如果将SpringBoot源码导入IDEA并对其进行调试,对核心的代码添加自己注释内容。

    2022年5月20日
    104
  • 操作系统(第四版)期末复习总结(上)

    操作系统(第四版)期末复习总结(上)马上要考操作系统了,第一章操作系统引论1、操作系统是什么?操作系统为用户完成所有“硬件相关,应用无关“的工作,以给用户方便、高效、安全的使用环境1.1、定义:操作系统是一个大型的程序系统,它负责计算机的全部软、硬件资源的分配、调度工作,控制并协调多个任务的活动,实现信息的存取和保护。它提供用户接口,使用户获得良好的工作环境。1.2、目标(1)、方便性:配置OS后计算机系统更容易使用(2)、…

    2022年6月8日
    33
  • 分布式文件存储数据库MongoDB(一)—-MongoDB的启动与关闭

    分布式文件存储数据库MongoDB(一)—-MongoDB的启动与关闭

    2020年11月12日
    184
  • 当前页面的脚本发生错误如何解决_电脑出现当前页面脚本错误怎么办

    当前页面的脚本发生错误如何解决_电脑出现当前页面脚本错误怎么办第一种方法:可能是由于自己浏览器的版本太低造成的,将自己电脑的ie浏览器版本升级到ie最高版本。(我原先ie9,升级到ie11后,就不会出现这种现象)。第二种方法:1、打开默认浏览器,在“工具”选项中打开中打开“Internet设置”选项。(不同的浏览器Internet设置选项的位置不同,自己查找看看,一般在“工具”选项中可以直接看到)2、在Internet属性界面中,点击高级…

    2022年4月19日
    110

发表回复

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

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