Python擷取IAccessible介面

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.