2013-07-24 23 views
1

Screenreaders通過我認爲是Windows API訪問其他程序中的信息。任何人都可以評論這是如何完成的,並提供一些文檔的鏈接?ScreenReaders如何從專注的Windows獲取文本信息?

是否有嚴重的侷限性,我應該知道的?

如果你知道如何工作在其他操作系統中,這將是感興趣的,以及什麼。

回答

3

大多數屏幕閱讀器使用UI Automation在其他程序中獲取信息。某些應用程序不以這種方式提供可訪問性信息(糟糕的程序員!糟糕!不好!),因此一些屏幕閱讀器使用mirror drivers截取低級繪圖操作,然後從那裏重新生成應用程序的信息。 (我不建議這樣做,這很痛苦,很容易掛起你的系統,在Windows 8及以上版本中不支持,但是,如果你真的需要這樣做,那麼你真的必須這麼做)。 IOS有類似的東西,雖然我不熟悉它。堆棧溢出的有用標籤是[ui-automation]和[Microsoft-ui-automation]。

+0

那裏的規範沒有列出在Windows 8上可用的UI自動化。這只是一個疏忽嗎? – thatidiotguy

+0

這會允許程序抓住當前聚焦的窗口上突出顯示的文本嗎? – thatidiotguy

+0

@thatidiotguy - 是的,這只是一個疏忽。爲了抓住突出顯示的文字,那就更加複雜了;看到[我的答案](http://stackoverflow.com/questions/4243944/how-to-get-selected-text-from-any-window-using-ui-automation-c-sharp/17604029#17604029)到那題。 –

1

屏幕閱讀器一般是通過Microsoft Active Accessibility and/or UI Automation訪問UI。

+0

*請*不要使用主動輔助功能。這是緩慢和討厭的; UI自動化將與Active Accessibility實現進行交流,並且以比您可以更快的速度進行。 MSAA非常健談,這使得跨運行時運行緩慢。 UI Automation運行MSAA接口in-proc(速度更快),然後將結果交叉處理。 –

相關問題