Hi,聆听·彼岸



听说,你是我最遥不可及的梦。
What should I do?
What should I do?
I think I'm going to fall in love with myself.

Python窗口操作

发表于 2022-07-21| 分类于 笔记 | | 评论数

pywin32: 自动化工作
win32api:提供了常用的用户API;
win32gui:提供了有关用户界面图形操作的API;
win32con:提供了消息常量的操作API;
win32file:提供了文件操作的API;
win32com:提供COM组件操作API。

这里主要学习win32gui,Let`s go.

首先安装pywin32

pipenv install pywin32

枚举所有窗口名称

import win32gui

hwnd_title = {}

def get_all_hwnd(hwnd, mouse):
if (win32gui.IsWindow(hwnd)
and win32gui.IsWindowEnabled(hwnd)
and win32gui.IsWindowVisible(hwnd)):
hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)})

title_list = []
win32gui.EnumWindows(get_all_hwnd, 0)#枚举
for h, t in hwnd_title.items():
if t :
title_list.append(t)
print(h, t)

测试如下

985914 tt.py - 无标题 (工作区) - Visual Studio Code
592812 (27条消息) python win32gui 自动化点击简单实例_Alfie happy的博客-CSDN博客_python win32gui 和另外 7 个页面 - 用户配置 1 - Microsoft​ Edge
656080 - 不散的花 - 酷狗音乐 泠鸢yousa
590752 下载
329780 Sandboxie-Plus v1.0.8 - 便携版
329586 lab2.0
65800 Program Manager

然后可以看到窗口标题前面的就是窗口句柄

根据句柄号取窗口位置

handleDetail = win32gui.GetWindowRect(句柄)
print(handleDetail)

根据窗口标题取句柄号

handle = win32gui.FindWindow(None, '标题')
print(handle)

窗口标题可以用任务管理器查看

通过句柄获取窗口类名

def get_clasname(hwnd):
clasname = win32gui.GetClassName(hwnd)
print('窗口类名:%s' % (clasname))
return clasname
get_clasname("句柄值")

通过句柄获取标题

title = win32gui.GetWindowText("句柄值")

枚举子窗口

hwndChildList = []     
win32gui.EnumChildWindows(handle, lambda hwnd, param: param.append(hwnd), hwndChildList)
print(hwndChildList)

满分是10分的话,这篇文章你给几分,您的支持将鼓励我继续创作!