2012-11-03 44 views
0

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

任何想法?

回答

0

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

上面的屏幕截图,从截图我把在Outlook还在我的机器上加载裁剪。

所以也许轮询Outlook的进程,得到它的主窗口标题,看看它是否包含开放。 非常脏的解决方案,可能有2个缺陷:

  1. 本地化的Outlook可能会显示不同的消息。
  2. 您可能会错过打开的消息,具体取决于查询进程需要多少时间,获取主窗口以及您的计时器间隔是多少。

我认为在“开放”消息消失之后 - 所有加载项应该已经加载,只要它们没有被禁用。

也许Outlook进程的MainWindowTitle属性将成为检查“打开消息”的属性。有没有试过没:

Process.MainWindowTitle Property - MSDN

更新: 希望这将解决该启动过程中Outlook正在做一些数据完整性检查或类似的事情之前发射现有的加载项的情况下,但你应该在考虑这种方法安全之前真的做了很多测试...

希望这有助于,让我们知道它是否有效,以便我们可以使用它,以防万一需要它。

0

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

我建议是这样的:1。 如果是这样重要的是要有外接运行,与您的应用程序替换办公应用程序的快捷方式(如果可以的话,如企业环境) 2.检查注册表之前你关闭办公室的应用程序,所以你可以做到这一点,而不用等待 3。尝试模仿你的“guradian”内部应用程序办公应用程序 - 创建实例,并检查是否加载项加载

对于任何办法,这听起来像任何一个企业的规则执行,在这种情况下,你有过的快捷方式和办公应用程序安装控制,或者是一个过度强加的商业软件,在这种情况下 - 认为(即这是正确的方法)。

HTH