Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web浏览器挂钩和自动化_C#_C++_.net_Browser_Hook - Fatal编程技术网

C# Web浏览器挂钩和自动化

C# Web浏览器挂钩和自动化,c#,c++,.net,browser,hook,C#,C++,.net,Browser,Hook,我正在开始一个项目的研究,这个项目涉及到利用SAPI的语音反馈来浏览网络。该应用程序将被盲人和视力受损者使用,通过当前选定对象的完整语音反馈以及阅读整个页面和填写表单的能力来浏览web。我在SAPI和易访问性方面有大量的经验,但是我不太熟悉HTML,也不太熟悉这个项目的最佳方法,我想请在这方面有经验的人提供指导。基本概念,我已经解释了一点,就是让盲人用户不用屏幕阅读器就可以使用这个独立的产品,并且能够使用键盘浏览网页,并从我创建的合成器接收语音反馈。我可以使用windows内置的辅助功能API为

我正在开始一个项目的研究,这个项目涉及到利用SAPI的语音反馈来浏览网络。该应用程序将被盲人和视力受损者使用,通过当前选定对象的完整语音反馈以及阅读整个页面和填写表单的能力来浏览web。我在SAPI和易访问性方面有大量的经验,但是我不太熟悉HTML,也不太熟悉这个项目的最佳方法,我想请在这方面有经验的人提供指导。基本概念,我已经解释了一点,就是让盲人用户不用屏幕阅读器就可以使用这个独立的产品,并且能够使用键盘浏览网页,并从我创建的合成器接收语音反馈。我可以使用windows内置的辅助功能API为低视力用户显示位置


谢谢大家!

IE支持所有可访问性界面(我相信所有其他浏览器也支持-)

分为两部分-使用IAccessible和相关接口的代码访问和良好的HTML(即正确使用像UL/LI这样的语义标记)标记,以及可能使用其他CSS可访问性属性(即aria扩展)的代码访问


可能的起始链接-

我得出的结论是,为了获得一个会说话的web浏览器,我实际上必须使用Set-WindowsHookex钩住WebBrowser控件的一个实例。在setwindowshookex回调中,我监视事件:OB_FOCUS(焦点已更改,可以是键盘或鼠标),然后将具有焦点的对象实例传递给AccessibleObjectFromEvent API。接下来,我获取该对象的IAccessible接口,然后枚举所有子对象(如果存在),并将它们与与与HTML/Web对象相关的已知对象列表进行比较,以使用适当的类来解析此字段并宣布文本(如果可用),如果用户位于可编辑字段、聚焦按钮等中。。。我还使用IAccessible类通过在当前聚焦对象上绘制一个矩形来获取对象位置和当前位置。我还创建了一个类,它只提取链接、文本、删除图像等,为有视觉障碍的人提供更轻松、更愉快的网络体验。我仍有一些夸克有待研究,但进展正在向前推进

是的,我对IAccessible非常熟悉。我曾用它来自动化windows应用程序,但从未在IE中使用过。我知道我可以使用AccessibleObjectFromPoint()来获取光标下的文本以及对象/文本框的名称。我的挑战主要是在焦点改变时完成这项工作,获取当前的焦点对象并根据预定义控件列表破译它是什么,然后找出获取控件信息和属性的正确方法。我正在潜入一个我不熟悉但还没有测试过的领域,只是有大量的理论我还没有应用。理想情况下,我想挂接浏览器,我可能需要结合使用AccessibleObjectFromEvent()进行系统范围的挂接。旁注:无需添加“感谢便笺”-upvote/comment/accept。您没有放置有用的标记(您的问题看起来像“如何使用浏览器的可访问性”,而标记包括“webbrowser”和“sapi”)。这个问题的范围可能有点太广了(感觉就像“如何设计JAWS克隆”)。我并不局限于IAccessible,因为我知道有很多其他方法可以通过IWebBrowser2的内部挂钩来处理这个问题。这个问题是留给一个更广泛的范围内的目的,我想得到任何信息,我可以不限制自己的任何1方法。我肯定有人会欣赏我的“感谢信”。。。我想表达一点对帮助/支持的感激之情…仅供参考,JAWS在IE中非常糟糕。。。。