我怎样才能防止VS2013在Dragon自然说话中运行COM异常

时间:2016-07-11 12:37:37

标签: winforms visual-studio-2013 windows-10 naturallyspeaking

我有RSI,当它突然爆发时,我使用Dragon Naturally Speaking 12 Home来节省很多打字。一般来说,我发现它非常准确,当我没有打字时,我的RSI会下降。

但是,我现在正在Windows 10上使用它,在Visual Studio 2013中开发WinForms应用程序。当附加调试器运行时,我得到了很多COM异常。

这些发生在各个地方,主要是在显示ToolStripMenu时(当什么都没有访问任何COM组件时),我终于将它追踪到Dragon。

如果Dragon正在运行,即使麦克风已关闭,也会出现异常,但如果我关闭Dragon,则不会

去年我在Windows 7上使用了相同的软件组合,但没有出现这些问题。

重新启动没有任何区别;也不会在启动Dragon之前或之后启动Visual Studio。

我想避免转移到Visual Studio或Dragon的更高版本的费用,除非我知道问题在更高版本中得到解决。

如何阻止VS2013捕获这些异常?

编辑以提供堆栈跟踪:

System.Runtime.InteropServices.COMException crossed a native/managed boundary
  ErrorCode=-2147352573
  Message=Member not found. (Exception from HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND))
  Source=Accessibility
  StackTrace:
       at Accessibility.IAccessible.get_accKeyboardShortcut(Object varChild)
       at System.Windows.Forms.AccessibleObject.get_accKeyboardShortcutInternal(Object childID)
  InnerException: 

在所有显示ToolStripMenu时捕获COM异常的情况下,堆栈跟踪是相同的。

**编辑简洁,删除无关的细节。

2 个答案:

答案 0 :(得分:2)

我猜想VS 2015不会有多大帮助,因为它更可能是新操作系统和Dragon之间互动的差异。

你能启用Debug - > Windows - >模块并检查是否有与Dragon相关的东西挂钩到你正在调试的过程中?我猜测Dragon挂钩并且它的调用没有被错误检查,所以它们会冒泡到你的调试会话。

Dragon中有什么东西可以排除进程吗?如果是,您可以排除目标,看看它是否有帮助。

答案 1 :(得分:1)

好的,按照Mark的建议,我发现通过关闭调试选项break when exceptions cross appdomain or managed/native boundaries,吞下了异常,但菜单出现时有明显的刺激性延迟。

然后,正如他在答案中建议我接受的那样,我更仔细地研究了龙的选择。由于我已确定主要罪魁祸首是ToolStripMenus,因此关闭菜单和按钮的语音命令的选项显然是尝试的选择:

enter image description here

取消我在屏幕截图中指出的选项,整个问题就消失了。