Python获取IAccessible接口

摘要:
技术模型是这样的,UI程序可以为另一个程序公开一个接口来控制它。MSAA技术的初衷是为了方便残疾人使用Windows程序。例如,盲人看不到窗户,但盲人可以通过USB读屏器连接到电脑。屏幕阅读器可以通过UI程序暴露的界面获取程序信息,并通过盲文或其他形式将其传递给盲人。MSAA提供了方便的功能,UI自动化测试自然可以借用这项技术。MSAA公开的接口称为IAccessible。

MSAA的全称是Microsoft Active Accessibility。这是类似DCOM技术。技术模型是这样的,UI程序可以暴露出一个Interface,方便另一个程序对其进行控制。 MSAA技术的初衷是为了方便残疾人使用Windows 程序。比如盲人看不到窗口,但是盲人可以通过一个USB读屏器连接到电脑上, 读屏器通过UI程序暴露出来的这个Interface,就可以获取程序信息,通过盲文或者其它形式传递给盲人。

MSAA提供了如此方便的功能, UI自动化测试自然可以借用这项技术。MSAA暴露出来的Interface叫做 IAccessible。

Python中获取IAccessible接口的方法如下:

from ctypes import windll, oledll, WinError, byref, POINTER
from ctypes.wintypes import POINT

from comtypes import COMError
from comtypes.automation import VARIANT
from comtypes.client import GetModule

# create wrapper for the oleacc.dll type library
GetModule("oleacc.dll")
# import the interface we need from the wrapper
from comtypes.gen.Accessibility import IAccessible

def AccessibleObjectFromPoint(x, y):
    
"Return an accessible object and an index. See MSDN for details."
    pacc 
= POINTER(IAccessible)()
    var 
= VARIANT()
    oledll.oleacc.AccessibleObjectFromPoint(POINT(x, y), byref(pacc),
byref(var))
    
return pacc, var

def AccessibleObjectFromWindow(hwnd):
    ptr 
= POINTER(IAccessible)()
    res 
= oledll.oleacc.AccessibleObjectFromWindow(
      hwnd,0,
      byref(IAccessible._iid_),byref(ptr))
    
return ptr


免责声明:文章转载自《Python获取IAccessible接口》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇redis集群之REDIS CLUSTER设置修改CentOS系统时区下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PHP开发APP接口实现--基本篇

最近一段时间一直在做APP接口,总结一下APP接口开发以来的心得,与大家分享: 1. 客户端/服务器接口请求流程: 安卓/IOS客户端   –> PHP接口 –> 服务器端  –> 数据处理 –> 返回值(客户端接收并处理) APP的通信方式: 客户端 (接口地址:http://app.com/api.php?format=xml/...

使用SWIG将C++接口转换成Java接口

PS:此文章仅作为个人记录使用,代码属于私密,故无法公开; 以C++类classifier为例,文件保存于百度网盘 https://pan.baidu.com/s/1c2AwhaS(需密码) 系统:Ubuntu 15.04 参考资料: ubuntu源码安装swig 利用swig转换C++接口到Java接口 SWIG3.0说明文档 编程中出现的错误: ja...

Python接口测试入门

接口测试基础篇用几个简单的案例,带你轻松了解接口测试 首先了解一下接口测试的重要性: 接口测试有什么要求呢? 首先需要清晰的接口文档,标准如下: 接口名称 接口类型 输入参数 每个参数名; 每个参数类型; 每个参数业务含义; 每个是否可空; 每个字段长度(可选,一般需要提供,有严格要求的字段需特别注明); 输出参数 状态码; 提示信息; 每个参...

Http自动跳转Https的接口测试实践

日前,需要做一个接口测试,对象是一个web系统,登录的时候需要用SSL连接,登录进入系统后自动转成普通的Http连接。 这种类型的web网站很常见,既保证了登录时的安全,也避免了整个系统使用SSL带来的系统性能下降的问题。 首先,我们把整个访问过程分解成3个过程: 访问http接口:http://***.com/?; 跳转到Https,登录用ssl连...

Java设计模式7:适配器模式

适配器模式 适配器模式说的是,可以把一个类的接口变换成客户端所期待的另一种接口,使得原本因接口不匹配而无法在一起工作的两个类可以一起工作。 适配器模式的用途 适配器模式的用途,在网上找了一幅图,挺形象的: 比方说我有一个台灯,其插头是标准的两相的交流电插头,即阳极、阴极。我旅游到了一个地方想用自己的台灯,但发现旅馆里面只有三相的插头,即在阳极、阴极的基础...

App接口如何保证安全

微信开发或者高德地图,百度地图什么的api要使用,使用之前都需要注册一个账号,然后系统会给你一个key,然后调用api的时候把key传给服务器。 平常公司内部开发项目时,直接用mvc为app客户端提供接口,没有做过验证。 本次为了安全,所以需要考虑解决下安全问题。咨询了同学,有人提出,自己定义一个加密字符串+实时的一个时间戳,对称加密。app每次请求接口,...