Microsoft Office验证加载项已加载

时间:2012-11-03 12:05:03

标签: outlook ms-office outlook-addin office-addins

我们为微软办公室开发了一个COM加载项。 我们希望确保在办公室应用程序启动时加载我们的加载项(意味着没有人试图在注册表中禁用它)。 我们当前的解决方案是我们正在使用外部应用程序,加载项假定在特定时间之后进行通信,从办公室应用程序启动的第二个开始计算。如果它没有通信,那么我们停止办公室应用程序,在注册表中验证我们要加载,然后再次启动它。 这是一个有问题的系统,因为没有人能猜出什么是合适的等待时间,而且你不想在工作10分钟后给用户,突然出现错误,更不用说添加对我们来说很重要了。 -in将尽快上传。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

也许是一个肮脏的解决方案,但您可以等到主Outlook窗口的标题从“打开Outlook”更改为其他内容?

Outlook in the Task Manager.

上面的屏幕截图是我在我的机器上加载Outlook时拍摄的截图。

因此,可以轮询Outlook的进程,获取它的主窗口标题,看看它是否包含Opening。 很脏的解决方案,可能有2个缺陷:

  1. 本地化的Outlook可能会显示不同的消息。
  2. 您可能会错过Opening消息,具体取决于查询进程所需的时间,获取主窗口以及您的计时器间隔。
  3. 我认为在“打开”消息消失后​​ - 如果没有禁用,则应该已加载所有加载项。

    也许Outlook进程的MainWindowTitle属性将是检查“打开消息”的属性。尚未尝试过:

    Process.MainWindowTitle Property - MSDN

    更新: 这有望解决Outlook在启动现有加载项之前进行一些数据完整性检查或类似事情的情况,但在考虑这种方法安全之前,您应该进行大量测试......

    希望这有帮助,让我们知道它是否有效,以便我们可以在需要时使用它。

答案 1 :(得分:0)

如果这确实是您的“监护人”应用程序正在执行的操作,您可能需要重新考虑该方法。 1.为什么要在检查注册表之前停止办公室应用程序? 2.如果您的支票已通过但加载项仍未运行,您会怎么做?

我会建议像: 1.如果这对于加载项运行非常重要,请用您的应用程序替换office app快捷方式(如果可以,例如公司环境) 2.在关闭办公室应用程序之前检查注册表,这样您就可以完全无需等待 3.尝试在“guradian”应用程序中模拟office应用程序 - 创建实例并检查加载项是否已加载

通过任何方法,这听起来像是公司规则执行,在这种情况下您可以控制快捷方式和办公室应用程序安装,或者在这种情况下过度强加的商业软件 - 思考(即,这是正确的方法)。

HTH