- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
来自msdn看来 IMessageFilter 并不能处理所有异常,例如,在某些时候,办公应用程序会“挂起”其对象模型,此时它无法被调用并抛出:0x800AC472 (VBA_E_IGNORE )
为了解决这个问题,您必须将调用放入循环中并等待其成功:
while(true)
{
try
{
office_app.DoSomething();
break;
}
catch(COMException ce)
{
LOG(ce.Message);
}
}
我的问题是:如果每次调用 Office 应用程序的对象模型都需要此样板代码,那么实现 IMessageFilter
是否有任何意义?
最佳答案
是的,这两种机制是独立的。 IMessageFilter 是一种通用 COM 机制,用于处理已陷入紧张状态并且在 60 秒内无法处理调用的 COM 服务器。 VBE_E_IGNORE 错误是 Excel 特有的错误,当 Excel 处于属性浏览器暂时禁用的状态时,就会发生该错误。将其视为一种模态状态,当 Excel 需要执行必须完成才能再次处理进程外调用之前的关键操作时,会有意打开它。如果你愿意的话,一把锁。它不像 IMessageFilter 那样与时间相关,而是纯粹与执行状态相关。 VSTO 团队的 Geoff Darst 在本文中提供了一些背景信息 MSDN forums thread .
不得不编写这些类型的重试循环当然是可怕的。鉴于这是一个执行状态问题,并且假设您正在与 Excel 进行互操作,而用户也没有操作该程序,那么应该有一种方法可以解决该问题。如果您从程序中的工作线程对 Excel 进行操作,请考虑检查代码中线程之间的交互,以确保不会出现线程几乎同时发出 Excel 调用的情况。
关于excel - IMessageFilter 无法处理 0x800AC472 (VBA_E_IGNORE) 是否会使实现 IMessageFilter 变得无关紧要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14596337/
来自msdn看来 IMessageFilter 并不能处理所有异常,例如,在某些时候,办公应用程序会“挂起”其对象模型,此时它无法被调用并抛出:0x800AC472 (VBA_E_IGNORE ) 为
我正在研究 Word 自动化,为了消除“调用被被调用者拒绝”/“消息过滤器指示应用程序正忙”错误,我实现了 IMessageFilter。当我直接自动化 Word 时,消息过滤器就像一个魅力: Wor
我仍在尝试找出此错误的原因: OCR.test.IMessageFilter.PreFilterMessage(ref System.Windows.Forms.Message): containin
当鼠标悬停在子控件上时,不会调用 MouseDown 事件。我尝试了 KeyPreview = true; 但它没有帮助(尽管它对 KeyDown - 键盘点击有用)。 我正在寻找类似 KeyPrev
我想实现IOleMessageFilter,如下所述: How to: Fix 'Application is Busy' and 'Call was Rejected By Callee' Erro
我正在尝试使用 Python.net 在 Winforms 应用程序中添加自定义 IMessageFilter,但出现段错误。 这是一个最小的示例应用程序: import clr clr.AddRef
我是一名优秀的程序员,十分优秀!