首頁>技術>

什麼是MSAA

Microsoft Active Accessibility是基於元件物件模型(COM)的技術,它改進了輔助功能與在Microsoft Windows上執行的應用程式一起工作的方式。它提供了整合到作業系統中的動態連結庫,以及COM介面和API元素,而且提供了用於公開有關UI元素的資訊的可靠方法。

從上面的定義,我們得知:MSAA是一種將有關螢幕上物件的資訊公開給輔助功能(如螢幕閱讀器)的技術。但這並不意味著只有螢幕閱讀器才能使用它。

下面是一個例子程式,它在最基本的級別上說明了Active Accessibility的用法:閱讀文字。 Active Accessibility的功能不僅限於此。你還可以以程式設計方式瀏覽螢幕上的物件,讀取各種屬性,甚至呼叫它們上的命令。

我們先看看下面的程式碼:

當然,最有意思的部分是RecalcText這個函式,它會獲取當前滑鼠位置下的文字:

讓我們來看看上面程式碼的功能。我們從獲取游標位置開始,程式碼會判斷自上次檢查以來它是否發生了變化。如果確實發生了變化,則我們要求AccessibleObjectFromPoint在這些座標處標識物件,併為我們提供IAccessible指標和一個子識別符號。這兩條資訊共同表示游標下的物件。

現在,只需簡單地查詢物件的名稱(get_accName)和值(get_accValue)並對其進行格式化即可。

另外,請注意,我們根據Eric的Complete Guide to BSTR Semantics對BSTR為NULL的情況進行了處理。

總結

這項技術,確實能做到普通Win32 API做不到的事情,你真棒!

最後

Raymond Chen的《The Old New Thing》是我非常喜歡的部落格之一,裡面有很多關於Windows的小知識,對於廣大Windows平臺開發者來說,確實十分有幫助。本文來自:《How to retrieve text under the cursor (mouse pointer)》

11
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 每次10分鐘跟我學Python(第三十三次課)