2017-02-10 92 views
1

我有winforms应用程序包含cefsharp ChromiumWebBrowser组件。我想让JAWS阅读它的内容。现在JAWS只读取主窗口的标题。有什么办法可以做到这一点?我尝试过“强制渲染器 - 可访问性”标志,但它没有帮助我。如何让JAWS屏幕阅读器识别并阅读cefsharp ChromiumWebBrowser控件的内容?

这里是我试过的代码:

var settings = new CefSettings() 
     { 
      CefCommandLineArgs = { new KeyValuePair<string, string>("force-renderer-accessibility", "true") } 
     };    
     Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null); 
+0

你的代码有什么问题?为什么它不起作用? –

+0

默认情况下,浏览器运行在不同的消息循环中。搜索消息循环的一般用法指南以获取详细信息 – amaitland

回答

1

继amaitland的提示上面我们发现了以下的解决方案。

禁用MultiThreadedMessageLoop - 然后您需要根据下面的原始示例定期调用DoMessageLoopWork。

 var settings = new CefSettings() 
     { 
      MultiThreadedMessageLoop = false 
     };    
     Cef.Initialize(settings); 

     browser = new ChromiumWebBrowser ("https://devsandbox.surpass-preview.com/launchtest"); 

     var t = new Timer {Interval = 5}; 
     t.Start(); 
     t.Tick += t_Tick; 

     this.panel1.Controls.Add(browser); 

    } 

    void t_Tick(object sender, EventArgs e) 
    { 
     this.BeginInvoke((Action) (() => Cef.DoMessageLoopWork())); 
    } 
+0

DoMessageLoopWork应该每秒运行大约60次,转换为每16ms大约一次。过于频繁地运行会产生不可预测的后果。 – amaitland

+0

好的,这是伟大的信息谢谢。我对此一无所知。 –