Python获取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

[温馨提示]:该文章由原博客园导入而来,如排版效果不佳,请移步:http://www.cnblogs.com/coderzh/archive/2010/06/05/1752141.html

微信扫一扫交流

作者:CoderZh
微信关注:hacker-thinking (一个程序员的思考)
本文出处:https://blog.coderzh.com/2010/06/05/1752141/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。