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


相关推荐

  • Scripting.FileSystemObject 的文件复制,删除,移动操作

    Scripting.FileSystemObject 的文件复制,删除,移动操作<%’创建一个FileSystemObject的事例SetMyFileObject=Server.CreateObject(“Scripting.FileSystemObject”)’创建一个要进行操作的文件SetMyFile=MyFileObject.CreateTextFile(“c:\test.txt”)MyFile.WriteLine(“Hello”)MyFile.Close’复…

    2022年7月14日
    68
  • vue框架中用于表单数据绑定的指令_jquery获取表单输入val

    vue框架中用于表单数据绑定的指令_jquery获取表单输入valv-modelv-model指定可以实现表单值与属性的双向绑定。即表单元素中更改了值会自动的更新属性中的值,属性中的值更新了会自动更新表单中的值绑定的属性和事件v-model在内部为不同的输入元

    2022年8月7日
    5
  • Flashfxpv.3.5.4注册码

    Flashfxpv.3.5.4注册码在安装好任意版本的Flashfxp之后,只要在注册栏中,全盘粘贴一下文字就可以了^_^——–FlashFXPRegistrationDataSTART——–FLASHFXPwQAOlhkgwQAAAAC6W5MNJwTnsl73nIraAU149tnCQS0hmZU3GGBQG1FtoSp5x0mUgA7bFW0qr0fKk2KCA+v2CCrFbF+q

    2022年7月26日
    17
  • VB程序设计教程(第四版)龚沛曾-实验8-2

    VB程序设计教程(第四版)龚沛曾-实验8-2实验8-2将斐波那契数列的前10项写入文件Fb.dat,然后从该文件将数据读取出来并计算合计和平均数,最后送入列表框。要求:文件数据格式如2.8.2所示,列表框中项目格式如图2.8.3所示。解题,画2个按钮,1个列表框控件,代码如下:PrivateSubCommand1_Click()Dimfib%(0To9),i%Open”c:\fb.dat…

    2022年10月6日
    4
  • java分页代码_基本分页存储管理java代码

    java分页代码_基本分页存储管理java代码在java项目中不使用mybatis的pageHelper进行数据分页:1.分页工具类编写:importjava.util.List;publicclassPageModel&lt;E&gt;{//结果集privateList&lt;E&gt;list;//查询记录数privateinttotalRecords;…

    2022年10月3日
    1
  • N的阶乘(大数阶乘算法)

    N的阶乘(大数阶乘算法)题目描述输入一个正整数N,输出N的阶乘。输入描述:正整数N(0<=N<=1000)输出描述:输入可能包括多组数据,对于每一组输入数据,输出N的阶乘输入例子:4515输出例子:241201307674368000#include<iostream>#include<cstring>usingnames…

    2022年7月24日
    8

发表回复

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

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