代码之家  ›  专栏  ›  技术社区  ›  Stephen Wrighton

vb.net自动MS Word的拼写检查功能

  •  1
  • Stephen Wrighton  · 技术社区  · 16 年前

    当前正在开发的应用程序要求使用MS Word对应用程序中的某些文本区域执行拼写检查。

    我现在有Office2007(它是Office12 COM对象)。

    我的问题是,如果我在Office12对象中添加内容,在使用Office2003的框中会发生什么?这涉及到其他开发框和最终用户。

    我是否正确地相信最终结果将是这些用户无法使用拼写功能?如果我使用Office11对象,这是否意味着如果安装了Office07,用户将无法执行拼写检查?

    5 回复  |  直到 15 年前
        1
  •  1
  •   Mark Glorie    16 年前

    我们放弃了使用对Word的依赖,因为两者都安装了不同的版本,或者根本没有安装Office!而是选择 NetSpell .

        2
  •  0
  •   Jeff Yates    16 年前

    我在这里猜测,但是如果您不能在2003安装中使用2007 PIA(主互操作程序集),那么您可以尝试通过反射访问PIA,因为我猜您想要的调用不会在这两者之间发生变化,那么这并不重要-您将使用安装的任何一个。如果您也在安装PIA,那么您可以让用户告诉您他们有哪些产品,或者稍微聪明一点,只需尝试2007年,如果失败,则尝试2003年。

    就像我说的,我猜在这里,但也许值得一试。

    编辑:我找到了这个 link 关于Office PIA。这是指Excel,但实际上涵盖了整个Office。我不羡慕你的任务。看起来您需要检测PIA(可能安装了PIA,也可能未安装PIA),并采取相应的措施。对我来说,这听起来像是一份反思的工作。

        3
  •  0
  •   White Vans Inc    16 年前

    Office的较新版本将保持大多数(如果不是全部)与较旧版本的COM对象的兼容性。这意味着,如果要针对Office2003和2007进行编程,则需要使用Office11 COM对象作为依赖项,因为它们是2003发布时最新的可用对象。只要您确认您需要的方法同时存在两个版本的COM对象,只要您使用旧的COM对象,就应该没有问题。

    不幸的是,虽然我在自己的工作中使用了这个解决方案,但我没有用拼写检查来测试它。最后,请确保使用希望与之集成的Office的所有版本测试代码。

        4
  •  0
  •   jwalkerjr    16 年前

    我对这个问题的本能反应就是建议你走另一条路。尝试使用第三方拼写检查控件。它们相对便宜(你可以找到一些免费的控制)。至少通过这种方式,你可以控制应用中包含的控件版本,并且能够依赖它的功能。坦率地说,我很惊讶这个库还没有内置到Windows中。当然,Windows支持的所有语言都很复杂,但现在就用户期望而言,它与复制/粘贴类似。

        5
  •  0
  •   VB programmer    16 年前

    实际上,您可以打包在两个版本中工作所需的Office11和Office12互操作。这需要一些小的工作,但我设法做到了。我在注册表中做一个检查,看看要调用哪个互操作,然后用正确的版本执行拼写检查。它甚至可以检查是否安装了Word,并发出错误警告,如果没有Word就无法进行拼写检查。我们不得不使用这个词,这是因为我们必须使用的医学词典。

    搜索interop或com包装器,我想你会发现两者都可以很容易地使用。

    推荐文章