【发布时间】:2012-12-07 19:04:08
【问题描述】:
我已经为 Word 2003 编写了一个 VSTO 插件,它工作正常。唯一的问题是插件会显示一个命令栏,当我在 Outlook 中创建新电子邮件时也会出现该命令栏。如何防止命令栏插件在 Outlook 上下文中仅在 Word 中显示?
【问题讨论】:
-
您的 Outlook 副本是否配置为使用 Word 作为电子邮件的编辑器?
我已经为 Word 2003 编写了一个 VSTO 插件,它工作正常。唯一的问题是插件会显示一个命令栏,当我在 Outlook 中创建新电子邮件时也会出现该命令栏。如何防止命令栏插件在 Outlook 上下文中仅在 Word 中显示?
【问题讨论】:
您的问题是 Outlook 使用 Word 作为电子邮件的编辑器。
您可以在 Outlook 中的“工具选项邮件格式”中将其关闭,或者您需要进行检测,例如 Document.Kind 属性,如果它是电子邮件,则其值为 wdDocumentEmail (=2)
【讨论】:
我还没有尝试过,但是你可以使用 Word 实例的 Parent 属性来确定它的父级是否是 Outlook 并且在这种情况下不显示命令栏吗?
【讨论】:
父属性只是不断地循环回 Microsoft Word,而不是 Outlook。我最终导入了 User32.dll 并获得了 Windows 名称,然后检查它是否包含 Microsoft Word。
我仍然遇到的唯一问题是,如果用户打开 Outlook,创建一条新消息,然后打开 Word,则 WINWORD.exe 进程仍然具有我假设的默认模板,因此是新的复制词不会显示我的插件。
【讨论】:
Word 中有几个属性可以让您检测它是否作为邮件编辑器运行。
App.MailEnvelope 应用信封 应用程序.电子邮件
所有返回电子邮件相关信息。如果没有将 word 用作电子邮件编辑器,我相信其中至少有一个不会返回任何内容,但我不再有权访问该代码,因此如果不尝试就无法确定。
也就是说,我知道即使是 MS 也不建议使用 Word 作为电子邮件编辑器。在 Office 2007 和 2010 中,我认为这不再是一种选择。
【讨论】: