2
我有一個自定義控件。我喜歡爲系統屏幕閱讀支持提供支持。有沒有什麼邏輯可以找到敘述者或編碼的UI工具在我們的機器中啓用?如何檢測敘述者工具正在運行?
我有一個自定義控件。我喜歡爲系統屏幕閱讀支持提供支持。有沒有什麼邏輯可以找到敘述者或編碼的UI工具在我們的機器中啓用?如何檢測敘述者工具正在運行?
您可以使用命名空間Windows.UI.Xaml.Automation.Peers
這種方法:
var isNarratorStarted = AutomationPeer.ListenerExists(AutomationEvents.AutomationFocusChanged);
我similiar情況下,但UWP應用程序工作時,我解決了這種方式。也許你可以從這裏拿東西:
private bool isAutomationPeerCreated = false;
private bool IsAutomationPeerAttached => this.isAutomationPeerCreated || AutomationPeer.ListenerExists(AutomationEvents.PropertyChanged);
//triggered everytime you run narrator or any other screen reading software that is based on accessing automation properties
protected override AutomationPeer OnCreateAutomationPeer()
{
if(!this.IsAutomationPeerAttached)
{
this.isAutomationPeerCreated = true;
this.OUR_LOGIC_BASED_ON_ATTACHED_NARRATOR();
}
return null;
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
this.isAutomationPeerCreated = false;
}
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if(IsAutomationPeerAttached)
{
this.OUR_LOGIC_BASED_ON_ATTACHED_NARRATOR();
}
}
private void OUR_LOGIC_BASED_ON_ATTACHED_NARRATOR()
{
//DO STH.
}
感謝您的幫助。但在Windows 10機器默認支持屏幕閱讀,以便每次OnAutomationPeer調用時都意味着每次創建對等體。到目前爲止,您的建議始終返回true如何跳過此操作。我的目標是檢測在我們的機器中啓用了第三方屏幕閱讀器工具或解說器。因爲我們已經在此基礎上進一步採取行動 – James