0

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

有任何想法吗?

4

2 回答 2

0

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

任务管理器中的 Outlook。

上面的屏幕截图是从我在 Outlook 仍在我的机器上加载时截取的屏幕截图。

因此,也许可以轮询 Outlook 的进程,获取它的主窗口标题并查看它是否包含正在打开。非常肮脏的解决方案,可能有两个缺陷:

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

我认为在“打开”消息消失后​​ - 所有加载项都应该加载,前提是它们没有被禁用。

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

Process.MainWindowTitle 属性 - MSDN

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

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

于 2012-11-04T12:32:45.973 回答
0

如果这确实是您的“监护人”应用程序正在做的事情,您可能需要重新考虑该方法。1. 为什么要在检查注册表之前停止office应用?2. 如果您的检查通过了,但插件仍然没有运行,您会怎么做?

我建议如下: 1. 如果加载项运行如此重要,请用您的应用程序替换 Office 应用程序快捷方式(如果可以,例如公司环境) 2.在关闭 Office 应用程序之前检查注册表,以便您可以执行无需等待 3. 尝试在“guradian”应用程序中模拟办公应用程序 - 创建实例并检查是否加载了加载项

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

高温高压

于 2012-11-10T02:02:23.617 回答