VSTO和.XLL.之间的通信

本文关键字:通信 之间 XLL VSTO | 更新日期: 2023-09-27 17:59:00

在Visual Studio中,我有一个解决方案。在这个解决方案中,我有两个项目。一个是VSTO,这样我们就可以为Excel制作一个插件。另一个项目是创建一个.xll文件,这样我们就可以拥有自定义函数。

VSTO帮助我们在excel上创建一个登录系统,这样他们就可以做某些事情。

然而,由于我们只希望我们的用户能够使用我们的自定义功能,他们必须登录。我认为这两个项目不能直接通信,所以.xll插件不知道用户是否登录。

这两个项目是否有沟通的余地?也许是通过一个中间人,比如一个有静态变量的类?

编辑:
更多信息:
这两个项目都是用C#代码编写的。我能够通过使用ExcelDNA为.xll文件做到这一点。

因此,如果有任何方法可以创建一个C#类,在两个项目之间协调或共享数据,那将是非常棒的。因为登录数据并不是我们唯一想要共享的东西。

我希望在类中会有一个静态布尔变量来保存用户是否登录。所以VSTO可以设置布尔值,.xll可以获得它。

VSTO和.XLL.之间的通信

您可以向.xll添加一个隐藏函数[ExcelFunction(IsHidden=true)],您可以使用Application.Run.从VSTO加载项调用该函数

我会使用一个允许用户验证许可证密钥的许可证系统。此过程可以在VSTO中进行。然后我会使用两种检查:

  1. 如果在VSTO中验证了许可证密钥,则加载xll,否则不加载
  2. 在xll中,通过使用相对路径,我会定位并第二次检查许可证密钥(以防止用户直接加载xll)

它只需要能够检查C#(VSTO)和C(Xll)中的许可证密钥,即在这两种语言中都实现验证密钥算法。