Cinta XML en Outlook: haz que aparezca en una ventana específica

Estoy haciendo mi primer bash de crear una cinta en Outlook usando XML y tengo problemas para encontrar específicamente cómo decirle a mi complemento que solo quiero que la cinta aparezca en las ventanas del Explorador.

¿Consejo?

Gracias.

mi archivo Ribbon1.XML:

      

El cuadro de error mágico que aparece dice:

CustomUI Runtime Error en testingOLaddin2

 Error found in CustomUI XML of "testingOLaddin2" Line: 3 Column: 10 Error Code 0x80004005 Failed to find Office control by ID ID: TabMail 

Por solicitud, mi código de generación de cinta:

 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Text; using Office = Microsoft.Office.Core; using System.Diagnostics; namespace testingOLaddin2 { [ComVisible(true)] public class Ribbon1 : Office.IRibbonExtensibility { private Office.IRibbonUI ribbon; public Ribbon1() { } #region IRibbonExtensibility Members public string GetCustomUI(string ribbonID) { return GetResourceText("testingOLaddin2.Ribbon1.xml"); } #endregion #region Ribbon Callbacks //Create callback methods here. For more information about adding callback methods, select the Ribbon XML item in Solution Explorer and then press F1 public void Ribbon_Load(Office.IRibbonUI ribbonUI) { this.ribbon = ribbonUI; } #endregion #region Helpers private static string GetResourceText(string resourceName) { Assembly asm = Assembly.GetExecutingAssembly(); string[] resourceNames = asm.GetManifestResourceNames(); for (int i = 0; i < resourceNames.Length; ++i) { if (string.Compare(resourceName, resourceNames[i], StringComparison.OrdinalIgnoreCase) == 0) { using (StreamReader resourceReader = new StreamReader(asm.GetManifestResourceStream(resourceNames[i]))) { if (resourceReader != null) { return resourceReader.ReadToEnd(); } } } } return null; } #endregion } } 

Esto depende del método que utilice para crear el complemento y la cinta. Si está utilizando el

 IRibbonExtensibility.GetCustomUI(string RibbonId) 

método que podría lograr esto solo devolviendo la cinta xml si el parámetro RibbonId tiene el valor

 "Microsoft.Outlook.Explorer" 

Editar

El siguiente cambio en tu código podría funcionar:

 public string GetCustomUI(string ribbonID) { if (ribbonID == "Microsoft.Outlook.Explorer") return GetResourceText("testingOLaddin2.Ribbon1.xml"); return null; // if problems here, try return string.Empty } 

Outlook llama a su GetCustomUI(string RibbonId) una vez que implemente CreateRibbonExtensibilityObject() en la clase ThisAddIn para devolver una nueva instancia de su clase de cinta. La clase de cinta es donde hace referencia al XML (en GetCustomUI ).

Para el XML en sí, deberá hacer referencia a cada tipo de explorador de Outlook individualmente. Desafortunadamente, no hay una manera general de especificar “todos los exploradores” en la syntax de Ribbon XML, que yo sepa.

Aquí hay algunos ejemplos que hacen referencia a los exploradores de correo y calendario:

              

Microsoft sí da alguna pista sobre los atributos de idMso para las tabs integradas, pero desafortunadamente está idMso en esta hoja de cálculo de Excel: enlace