当前正在开发的应用程序需要使用 MS Word 对应用程序中的某些文本区域执行拼写检查。
我目前有 Office 2007(即 Office 12 com 对象)。
我的问题是,如果我添加 Office 12 对象,那么在具有 Office 2003 的盒子上会发生什么?这既适用于其他开发盒,也适用于最终用户。
我是否认为最终结果将是这些用户无法使用拼写功能?如果我使用 Office 11 对象,这是否意味着如果用户安装了 Office 07,他们将无法执行拼写检查?
当前正在开发的应用程序需要使用 MS Word 对应用程序中的某些文本区域执行拼写检查。
我目前有 Office 2007(即 Office 12 com 对象)。
我的问题是,如果我添加 Office 12 对象,那么在具有 Office 2003 的盒子上会发生什么?这既适用于其他开发盒,也适用于最终用户。
我是否认为最终结果将是这些用户无法使用拼写功能?如果我使用 Office 11 对象,这是否意味着如果用户安装了 Office 07,他们将无法执行拼写检查?
我们放弃了尝试使用对 Word 的依赖,因为两者都安装了不同的版本或根本没有安装 Office!而是选择NetSpell。
我在这里猜测,但是如果您不能在 2003 安装中使用 2007 PIA(主互操作程序集),您可以尝试通过反射访问 PIA,因为我猜您想要的调用不会在二,然后没关系-您将使用已安装的任何一个。如果你也在安装 PIA,那么你可以让用户告诉你他们有哪些,或者更聪明一点,试试 2007,如果失败,试试 2003。
就像我说的,我猜这里但它可能值得一试。
编辑:我发现这个关于 Office PIA 的链接。这指的是 Excel,但实际上通常涵盖 Office。我不羡慕你的任务。看起来您需要检测 PIA(可能已安装也可能未安装)并采取相应措施。对我来说,这听起来像是一份反思的工作。
较新版本的 Office 将保持与旧版本 COM 对象的大部分(如果不是全部)兼容性。这意味着如果您想针对 Office 2003 和 2007 进行编程,您将需要使用 Office 11 COM 对象作为依赖项,因为它们是 2003 发布时可用的最新版本。只要您确认您需要的方法在两个版本的 COM 对象中都存在,只要您使用较旧的 COM 对象,您就应该没有问题。
不幸的是,虽然我在自己的工作中使用了这个解决方案,但我还没有使用拼写检查对其进行测试。最后,请确保使用您希望集成的所有版本的 Office 测试您的代码。
我对这个问题的直觉反应是简单地建议你走另一条路。尝试使用第 3 方拼写检查控件。它们相对便宜(您可能会发现一些免费控件)。至少通过这种方式,您可以控制应用程序中包含的控件的版本,并能够依赖它的功能。坦率地说,我很惊讶这个库还没有内置到 Windows 中。当然,Windows 支持的所有语言都很复杂,但现在就用户期望而言,它类似于复制/粘贴。
您实际上可以打包在两个版本中工作所需的 office11 和 office12 互操作。这需要一些小工作,但我设法做到了。我在注册表中检查以查看要调用哪个互操作,然后使用正确的版本执行拼写检查。它甚至可以检查您是否安装了 Word,并引发错误警报,如果没有 Word,您将无法进行拼写检查。由于我们需要使用与 Office 绑定的医学词典,因此我们与使用 Word 息息相关。
搜索 interop 或 Com 包装器,我想你会发现你可以很容易地使用它们。