VB.Net自动执行MS Word以进行拼写检查功能

时间:2020-03-06 14:59:54  来源:igfitidea点击:

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

我目前有Office 2007(这是Office 12 com对象)。

我的问题是,如果我在Office 12对象中添加带有Office 2003的盒子,会发生什么情况?这涉及到其他开发箱以及最终用户。

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

解决方案

我在这里猜测,但是如果是这样,因为我们无法在2003年的安装中使用2007 PIA(主互操作程序集),则可以尝试通过反射方式访问PIA,因为我猜想我们想要的调用在两次调用之间不会改变。两个,那么无论使用哪种安装都没关系。如果还安装了PIA,则可以让用户告诉我们他们拥有哪些PIA,或者更聪明些,请尝试2007,如果失败,请尝试2003.

就像我说的,我在这里猜测,但是可能值得尝试。

编辑:我发现有关Office PIA的此链接。这指的是Excel,但实际上实际上涵盖了Office。我不羡慕你的任务。看来我们需要检测PIA(可能已安装或者可能未安装)并采取相应措施。听起来像是对我的反思工作。

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

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

不幸的是,尽管我在自己的工作中使用了此解决方案,但尚未通过Spell Check对其进行测试。最后,请确保我们要使用要集成的所有版本的Office测试代码。

我对这个问题的直觉是建议我们走另一条路。尝试使用第三方拼写检查控件。它们相对便宜(我们可能会找到一些免费控件)。至少通过这种方式,我们可以控制应用程序随附的控件的版本,并能够依赖其功能。坦率地说,我很惊讶该库尚未内置在Windows中。当然,Windows支持的所有语言都使它复杂化,但是如今,就用户期望而言,它类似于复制/粘贴。

我们实际上可以打包在两个版本中都需要的office11和office12互操作性。这需要一些小的工作,但我设法做到了。我在注册表中进行检查以查看要调用哪个互操作,然后以正确的版本执行拼写检查。它甚至可以检查我们是否已安装Word,并抛出错误警报,提示我们没有Word就无法进行拼写检查。由于医学词典与我们需要使用的Office绑定在一起,因此我们不得不使用Word。

在互操作器或者Com包装器上进行搜索,我想我们会发现可以很容易地同时使用两者。