我有一个C#Excel插件项目“MyExcelAddIn”,它有一个公共方法Foo()来做一些复杂的事情。为了测试的目的,插件还定义了一个连接到Foo()的工具栏按钮,这样我就可以测试它并验证点击按钮调用Foo()并做我想做的事情。这可以。如何从单独的C#项目调用VSTO AddIn方法?
现在我想从C#Windows窗体项目调用此方法。在Windows Forms项目中,我可以创建一个Excel实例并使其可见,并验证我的VSTO加载项正在运行,因为我可以看到该按钮并且它可以工作。但我不能解决如何从Windows窗体项目编程调用Foo()。我已经搜索了一下,并获得了“MyExcelAddIn”COMAddIn对象,但无法弄清楚如何调用Foo()。
它看起来是这样的:
// Create Excel and make it visible
Application excelApp = new Application();
excelApp.Visible = true;
// I know my VSTO add-in is running because I can see my test button
// Now get a reference to my VSTO add-in
Microsoft.Office.Core.COMAddIns comAddIns = _excelApp.COMAddIns;
object addinName = "MyExcelAddIn";
Microsoft.Office.Core.COMAddIn myAddin = comAddIns.Item(ref addinName);
// This works, but now what? How do I make a call on myAddin?
// Note that myAddin.Object is null...
所以我想知道我能做些什么来调用foo()从我的Windows窗体应用程序。请注意,我完全控制了Windows窗体应用程序和加载项,我怀疑我必须对它们(特别是加载项)进行更改,但我不知道如何执行此操作。
注意,这是一个VS2008 C#应用程序,我用Excel 2003
如何做到这一点?任何教程?我在哪里可以得到这个SendMessage Win32 API? – 2011-09-22 07:47:01