C# 使用C语言中的自动化功能在MS Word 2010中自定义功能区#

C# 使用C语言中的自动化功能在MS Word 2010中自定义功能区#,c#,ms-word,ribbon,office-automation,C#,Ms Word,Ribbon,Office Automation,我试图从我的C#应用程序中自动化MS Word,但在更改功能区UI时遇到问题。 我能找到的所有样本都使用IribboneExtensibility接口,该接口仅可从Addins获得。 是否可以使用自动化来实现这一点 使用仅可从加载项获得的iRibboneExtensibility接口 这意味着它不会通过自动化工作,接口不会暴露在进程外类型库中。您必须使用VSTO来编写外接程序,使用C#+Office+Word 2007外接程序项目模板来开始。我所做的是构建实现两个接口的小型ATL外接程序: ID

我试图从我的C#应用程序中自动化MS Word,但在更改功能区UI时遇到问题。 我能找到的所有样本都使用IribboneExtensibility接口,该接口仅可从Addins获得。 是否可以使用自动化来实现这一点

使用仅可从加载项获得的iRibboneExtensibility接口


这意味着它不会通过自动化工作,接口不会暴露在进程外类型库中。您必须使用VSTO来编写外接程序,使用C#+Office+Word 2007外接程序项目模板来开始。

我所做的是构建实现两个接口的小型ATL外接程序: IDTExtensibility2和IRibbonExtensibility 定制XML只是从文件中加载的

在C代码中,编码非常简单:

        RegistryKey key = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Office\Word\Addins\RibbonLoaderLib.RibbonLoader");
        key.SetValue("LoadBehavior",2,RegistryValueKind.DWord);
        key.SetValue("Description","Ribbon Loader Add-In",RegistryValueKind.String);
        key.SetValue("FriendlyName","Ribbon Loader Add-In",RegistryValueKind.String);
        wordApp_.COMAddIns.Item("RibbonLoaderLib.RibbonLoader").Connect = true;