第一种是基于类库的方式,参考WPS插件开发流程(1);另一种方式是直接创建office的vsto程序,再手动改写注册表使得wps能够识别和调用。如果我们最终的应用环境就是wps,由于此时我们创建的是office外接程序,如果我们未安装相应的office版本,我们在vs启用调式功能时必然报找不到指定文件的错误。为了能让wps也识别我们的插件,我们需要手动在注册表中增加我们的插件。同时,为了能在office vsto外接程序直接调试wps,需要修改项目属性调试,设置启动操作为启动外部程度,并在里面手动选择我们安装的wps路径,如果是word就选wps.exe,excel对应et.exe等等。这样我们既利用vsto方便了我们后期插件在wps上的部署,但又不会对我们的开发过程增加过多变动和工作量。
VSTO插件供WPS使用
private static void AddRegistertToWPS()
{
try
{
//所有插件通用
RegistryKey key = Registry.CurrentUser;
Dictionary<string, string> dic = new Dictionary<string, string>()
{
{@"Software\Microsoft\Office\Excel\Addins",@"Software\Kingsoft\Office\ET
\AddinsWL" },
{@"Software\Microsoft\Office\PowerPoint\Addins",@"Software\Kingsoft\Office\W PP\AddinsWL" },
{@"Software\Microsoft\Office\Word\Addins",@"Software\Kingsoft\Office\WPS
\AddinsWL" },
};
var wps = key.CreateSubKey(@"Software\Kingsoft\Office\ET\AddinsWL");
foreach (var item in dic)
{
var addins = key.OpenSubKey(item.Key, true);
foreach (var subKeyName in addins.GetSubKeyNames())
{
wps.SetValue(subKeyName, subKeyName, RegistryValueKind.String);
}
}
}
catch (Exception)
{
}
}
创建office vsto外接程序,开发wps插件,配置启动wps进行调试
我们目前知道创建wps的插件有两种实现方式,第一种是基于类库的方式,参考WPS插件开发流程(1);另一种方式是直接创建office的vsto程序,再手动改写注册表使得wps能够识别和调用。但是就第二种开发方式而言,如果我们最终的应用环境就是wps,由于此时我们创建的是office外接程序,如果我们未安装相应的office版本,我们在vs启用调式功能时必然报如下错误,不同电脑对应的路径不同,但是肯定是系统找不到指定的 文件错误。
并且从另一个角度讲,因为最终的应用环境是wps,我们当然希望能够直接启动wps调试,能够准确地发现插件运行中出现的bug。那如何实现创建的是office的vsto外接程序,调试时启动的却是WPS呢?
(1)修改注册表
首先打开vs2010或者更高版本,这里我们选择创建word 2007外接程序(也可以是更高版本),创建Ribbon1,并在菜单栏拖放一个按钮,用于测试。
编译项目,此时启动调试,该插件vs就已经自动帮我们写入到注册表了,因此如果在装有word 2007的系统上,就可以看到我们的插件已经正常加载到word 2007中了。
为了能让wps也识别我们的插件,我们需要手动在注册表中增加我们的插件,如图所示。
打开wps,我们的插件就已经出现在wps上了,但是如果启动调试的话,因为我们创建的office的vsto外接程序,所以此时调试默认的是启动word,如果我们电脑未安装对应版本还会报找不到文件的错误。
(2)配置启动为wps
为了能在office vsto外接程序直接调试wps,需要修改项目>属性>调试,设置启动操作为启动外部程度,并在里面手动选择我们安装的wps路径,如果是word就选wps.exe,excel对应et.exe等等。
此时在vs启动调试,发现vs自动调用wps,不再报找不到文件错误,对于wps应用插件的开发可以直接在office vsto的外接程序里调试开发啦,这样我们既利用vsto方便了我们后期插件在wps上的部署,但又不会对我们的开发过程增加过多变动和工作量。