pythonwin-win32gui 窗口查找和遍历

#coding=utf-8

__author__ = 'Administrator'

__doc__ = '''
pythonwin中win32gui的用法
本文件演如何使用win32gui来遍历系统中所有的顶层窗口,
并遍历所有顶层窗口中的子窗口
'''

import win32gui
from pprint import pprint

def gbk2utf8(s):
    return s.decode('gbk').encode('utf-8')

def show_window_attr(hWnd):
    '''
    显示窗口的属性
    :return:
    '''
    if not hWnd:
        return

    #中文系统默认title是gb2312的编码
    title = win32gui.GetWindowText(hWnd)
    title = gbk2utf8(title)
    clsname = win32gui.GetClassName(hWnd)

    print '窗口句柄:%s ' % (hWnd)
    print '窗口标题:%s' % (title)
    print '窗口类名:%s' % (clsname)
    print ''

def show_windows(hWndList):
    for h in hWndList:
        show_window_attr(h)

def demo_top_windows():
    '''
    演示如何列出所有的顶级窗口
    :return:
    '''
    hWndList = []
    win32gui.EnumWindows(lambda hWnd, param: param.append(hWnd), hWndList)
    show_windows(hWndList)

    return hWndList

def demo_child_windows(parent):
    '''
    演示如何列出所有的子窗口
    :return:
    '''
    if not parent:
        return

    hWndChildList = []
    win32gui.EnumChildWindows(parent, lambda hWnd, param: param.append(hWnd),  hWndChildList)
    show_windows(hWndChildList)
    return hWndChildList

hWndList = demo_top_windows()
assert len(hWndList)

parent = hWndList[20]
#这里系统的窗口好像不能直接遍历,不知道是否是权限的问题
hWndChildList = demo_child_windows(parent)

print('-----top windows-----')
pprint(hWndList)

print('-----sub windows:from %s------' % (parent))
pprint(hWndChildList)

时间: 2024-08-19 14:16:13

pythonwin-win32gui 窗口查找和遍历的相关文章

二叉查找树(插入、查找、遍历、删除.........)

[二叉查找树的性质] 二叉查找树是满足以下条件的二叉树: 左子树上的所有节点值均小于根节点值 右子树上的所有节点值均不小于根节点值 左右子树也都是二叉查找树 不存在两个节点的值相等 [二叉查找树的插入.删除过程] 二叉查找树的插入过程如下: 1. 若当前的二叉查找树为空,则插入的元素为根节点 2. 若插入的元素值小于根节点值,则将元素插入到左子树中:若插入的元素值不小于根节点值,则将元素插入到右子树中. 二叉查找树的删除,分三种情况进行处理: 1. p为叶子节点,直接删除该节点,再修改其父节点的

萌新笔记——C++里创建 Trie字典树(中文词典)(插入、查找、遍历、导入、导出)(上)

写了一个词典,用到了Trie字典树. 写这个词典的目的,一个是为了压缩一些数据,另一个是为了尝试搜索提示,就像在谷歌搜索的时候,打出某个关键字,会提示一串可能要搜索的东西. 首先放上最终的结果: input: 1 编程入门 2 编程软件 3 编程学习 4 编程学习网站 output: 1 char : 件 2 word : 编程软件 3 char : 习 4 word : 编程学习 5 char : 网 6 word : 编程学习网 7 char : 门 8 word : 编程入门 其实这里不应

Java对二叉搜索树进行插入、查找、遍历、最大值和最小值的操作

1.首先,需要一个节点对象的类.这些对象包含数据,数据代表存储的内容,而且还有指向节点的两个子节点的引用 class Node { public int iData; public double dData; public Node leftChild; public Node rightChild; public void displayNode() { System.out.print("{"); System.out.print(iData); System.out.print(

日常学习随笔-用链表的形式实现普通二叉树的新增、查找、遍历(前、中、后序)等基础功能(侧重源码+说明)

一.二叉树 1.二叉树的概念 二叉树是每个节点最多有两个子树的树结构.通常子树被称作"左子树"(left subtree)和"右子树"(right subtree),其次序不能任意颠倒. 2.性质 (1)若二叉树的层次从0开始,则在二叉树的第i层至多有2^i个结点(i>=0): (2)高度为k的二叉树最多有2^(k+1) - 1个结点(k>=-1). (空树的高度为-1): (3)对任何一棵二叉树,如果其叶子结点(度为0)数为m, 度为2的结点数为n,

根据获取的窗口句柄遍历窗口Edit控件

网上说遍历窗口控件有两种方法: 1),使用EnumChildWindows,没有深究, 学习网址如下:http://blog.sina.com.cn/s/blog_60ac1c4b010116uj.html 2),使用::FindWindowEx和GetWindow组合 下面只说第二种方法, 首先根据标题获取窗口的句柄, HWND hWnd=::FindWindow(NULL,"zhang001"); findwindow原型: FindWindow(   lpClassName, 

WinAPI: FindWindow、FindWindowEx - 查找窗口

FindWindow(   lpClassName,        {窗口的类名}   lpWindowName: PChar {窗口的标题} ): HWND;              {返回窗口的句柄; 失败返回 0} //FindWindowEx 比 FindWindow 多出两个句柄参数: FindWindowEx(   Parent: HWND;    {要查找子窗口的父窗口句柄}   Child: HWND;      {子窗口句柄}   ClassName: PChar; {}  

遍历查找问题的应用场景

查找问题是指在一个样本范围内,是否存在需要的数据. 在学习开发的过程中,我们经常遇到该类型的问题,学习遍历-查找问题,将有助于我们快速分析问题,给出解题思维流程图. 1.查找判断问题 单纯的查找问题,是用来判断给出的数据类型里面是否存在有我们想查找的数据,而不关心这些数据是什么.在解决该类问题的时候,往往用到以下方案: 第一步:定义一个bool变量isFind,表示是否找到,由于一开始还没有开始查找,自然没有找到,所以变量isFind的值应该为false. bool isFind=false;

delphi 遍历窗口

function EnumWindowsProc(hwnd: HWND; lparam: LPARAM): Boolean; stdcall; var buf: array[Byte] of Char; begin Result:= True; GetWindowText(hwnd, buf, SizeOf(buf)); Form1.Memo1.Lines.Add(buf); Form1.Memo1.Lines.Add(IntToStr(hwnd)); end; procedure TForm1

FindWindow 查找窗口

Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, _ ByVal lParam As Long) As Long Declare Function FindWindow Lib "user32" Alias _ "FindWin