Der Tools Namespace in NetOffice bietet hilfreiche Erweiterungen für die Addin Entwicklung die dabei helfen notwendigen und wiederkehrenden Code (auch Gerüstcode genannt) auf ein Minimum zu reduzieren bzw. vollends einzusparen. Neben dem NetOffice.Tools Namespace verfügt jede Anwendung über ihren eigenen Tools Namespace z.B. NetOffice.ExcelApi.Tools für Microsoft Excel. 

Schnelleinstieg – Ein COMAddin für MS-Excel

Listing 1.0

using NetOffice.Tools;
using NetOffice.ExcelApi.Tools;

[ProgId("MyCompany.ExcelAddin"), GuidAttribute("56F843AD-ECB8-45D6-9E33-C0928BD2FB03")]
[COMAddin("My Excel Tools Addin", "This is a sample Addin", 3)]
public class ThisAddin : COMAddin
{

}

Dieser kurze Beispielcode erstellt ein voll funktionsfähiges Addin für MS-Excel. Wenn Sie bereits COM Addins für Office entwickelt haben sind Ihnen das GuidAttribute und das ProgID Attribute sicherlich vertraut. Das Konzept im Tools Namespace von NetOffice greift diesen Attribut basierten Ansatz auf und stellt weitere Attribute zur Verfügung. Ausserdem müssen Sie von der abstrakten Basisklasse COMAddin erben. Die folgende Tabelle zeigt auf welche Attribute Sie auf Ihr Addin anwenden können.

Name – obligatorisch – Beschreibung

COMAddin – Ja – Dieses Attribute bestimmt mit welchen Werten Ihr Addin innerhalb der Office Anwendung registriert wird. Konkret handelt es sich damit umd die notwendigen Werte im Addins Registry Key der Office Anwendung.

Name – Anzeigename für Ihr Addin,
Description – Optionale Beschreibung,
LoadBehavior – Ladeverhalten z.B. 3 für LoadAtStartup

RegistryLocationAttribute – Nein – Dieses Attribute bestimmt ob das Addin systemweit oder nur für einen Benutzer registriert werden soll. In der Voreinstellung wird das Addin im Bereich HKEY_CURRENT_USER registriert. Sie können mit diesem Attribute diese Voreinstellung übergehen und HKEY_LOCAL_MACHINE auswählen. Beachten Sie das  in diesem Fall für die Registrierung erhöhte Ausführungsrechte benötigt werden.


CustomUIAttribute – Nein – Wenn Sie die Ribbon Oberfläche einer Office Anwendung erweitern möchten können Sie hier den Pfad zu einer eingebetteten XML Datei innerhalb ihres Assemblies angeben. Alternativ können Sie die Methode GetCustomUI der Bassisklasse COMAddin überschreiben.


OnConnection und Co - Wo sind meine Ereignisse?

Üblicherweise kommuniziert eine Office Anwendung mit seinen Addins über das IExtensibility2 Interface. Die Methoden von IExtensibility2 stehen Ihnen als Events zur Verfügung die Sie wahlweise nutzen können. Betrachten Sie dazu folgenden Beispielcode:

Listing 2.0

using NetOffice.Tools;
using NetOffice.ExcelApi.Tools;

[ProgId("MyCompany.ExcelAddin"), GuidAttribute("56F843AD-ECB8-45D6-9E33-C0928BD2FB03")]
[COMAddin("My Excel Tools Addin", "This is a sample Addin", 3)]
public class ThisAddin : COMAddin
{
     
public ThisAddin()
       {
           this.OnConnection += new OnConnectionEventHandler(ThisAddin_OnConnection);
           this.OnStartupComplete += new OnStartupCompleteEventHandler(ThisAddin_OnStartupComplete);
       }

       void ThisAddin_OnConnection(object Application, ext_ConnectMode ConnectMode, object AddInInst, ref Array custom)
       {

       }

        void ThisAddin_OnStartupComplete(ref Array custom)
        {
        }

}

Hinweis: Typischerweise würden Sie den Application Parameter in OnConnection jetzt lokal speichern. Dies ist jedoch nicht notwendig da die Basisklasse dies bereits für Sie erledigt hat. Nutzen Sie für den Zugriff auf die Host Anwendung das Property Application.

Weitergabe – Registrierung richtig steuern

Für die Registrierung/Deregistrierung von COM Addins stellen Sie normalerweise 2 statische Methoden zur Verfügung die Sie mit speziellen Attributen markieren. Während der Installation/De-Installation/Kompilierung ihres Addins werden diese Methoden aufgerufen und das Addin nimmt weite Teile seiner Registrierung in der Windows Registry selbst vor. Durch die Verwendung des COMAddin Attributes ist es nicht zwingend erforderlich das Sie Code für die Registrierung/Deregistrierung hinzufügen. Sie können den automatischen Registrierungsvorgang aber wahlweise übergehen oder ergänzen. 

In den NetOffice Tools stehen Ihnen ebenfalls 2 Attribute zur Verfügung, RegisterFunction und UnRegisterFunction. Betrachten Sie dazu folgenden Beispielcode:


[RegisterFunction(RegisterMode.CallAfter)]
public void OnRegister(RegisterCall callType)
{
}

[UnRegisterFunction(RegisterMode.CallAfter)]
public void OnUnRegister(RegisterCall callType)
{
}



Irgendwo ist e
in Fehler ist aufgetreten – Was nun?


Custom Taskpanes erstellen – Die Schnelleinführung

Last edited Oct 19, 2012 at 12:11 PM by SebastianDotNet, version 2

Comments

No comments yet.