【问题标题】:Microsoft office verify add-in loadedMicrosoft Office 验证加载项已加载
【发布时间】:2014-04-01 04:43:22
【问题描述】:
我们为 microsoft office 开发了一个 COM 插件。
我们希望确保在 Office 应用程序启动时加载我们的加载项(这意味着没有人试图在注册表中禁用它)。
我们当前的解决方案是,我们正在使用一个外部应用程序,插件应该在特定时间后与之通信,从办公应用程序启动的第二个开始计算。如果它没有通信,那么我们停止办公应用程序,在注册表中验证我们应该加载,然后重新启动它。
这是一个有问题的系统,因为没有人能猜到什么是合适的等待时间,而且你不想在工作 10 分钟后给用户,突然一个错误,更不用说添加对我们很重要-in 将尽快加载。
有什么想法吗?
【问题讨论】:
标签:
outlook
ms-office
outlook-addin
office-addins
【解决方案1】:
也许是一个肮脏的解决方案,但您可以等到 Outlook 主窗口的标题从“正在打开 Outlook”变为其他内容?
上面的屏幕截图是我在 Outlook 仍在我的机器上加载时截取的。
所以也许可以轮询 Outlook 的进程,获取它的主窗口标题并查看它是否包含正在打开。
非常肮脏的解决方案,可能有 2 个缺陷:
- 本地化的 Outlook 可能会显示不同的消息。
- 您可能会错过“打开”消息,具体取决于查询进程、获取主窗口以及您的计时器间隔需要多少时间。
我认为在“正在打开”消息消失后 - 所有加载项都应该已加载,前提是它们没有被禁用。
也许 Outlook 进程的 MainWindowTitle 属性将成为检查“打开消息”的属性。还没试过:
Process.MainWindowTitle Property - MSDN
更新:
这有望解决 Outlook 在启动现有加载项之前正在执行一些数据完整性检查或类似事情的情况,但在考虑这种方法安全之前,您确实应该进行大量测试......
希望这会有所帮助,让我们知道它是否有效,以便我们在需要时也可以使用它。
【解决方案2】:
如果这确实是您的“监护人”应用程序正在做的事情,您可能需要重新考虑该方法。
1. 为什么要在查看注册表之前停止office应用?
2. 如果您的检查通过了,但插件仍然没有运行,您该怎么办?
我建议如下:
1. 如果加载项运行如此重要,请将办公应用快捷方式替换为您的应用(如果可以,例如企业环境)
2. 检查注册表在关闭 Office 应用程序之前,您无需等待即可完成
3. 尝试在“guradian”应用程序中模拟办公应用程序 - 创建实例并检查是否加载了加载项
对于任何方法,这听起来要么是公司规则执行,在这种情况下您可以控制快捷方式和办公应用程序的安装,要么是过于强大的商业软件,在这种情况下 - 想想(即这是正确的方法)。
HTH