Grips-Todo-Projektverwaltung

zum Programm

Software

vertiefende Themen

Grips mbH

Grips mbH
Siegstr. 11
47051 Duisburg
Tel. +49 203 337193

Addin

Was ist ein Addin?

Mit einem Addin können Programmfunktionen der Projektverwaltung erweitert werden. Normalerweise ist das Programm ein "geschlossenes System", welches gewisse Funktionen zur Verfügung stellt. Besondere Wünsche können nicht immer in das Programm integriert werden, da diese individuell sehr differieren können. Deshalb können zusätzlich zu den normalen Funktionen Addins installiert werden, die das Programm erweitern können.

Durch die Verwendung von Addins kann die Projektverwaltung von Sonderaufgaben befreit werden und bleibt damit "jungfräulich".

Fertige Addins

Outlook Export

Download: OutlookAddon.tda. Dieses Addin muss im Addin-Verzeichnis von Todo gespeichert werden.

Download Quelltext: OutlookAddon.zip

zu den Quelltexten

Dazu wird eine kleine Hilfsklasse eingesetzt.

        #import "[Microsoft Shared]\OFFICE11\MSO.DLL" named_guids
        #import "[OFFICE11]\MSOUTL.OLB"\
          no_namespace exclude("_IRecipientControl", "_DRecipientControl")
        class  COutlookanbindung
        {
        public:
          BOOL m_Initialisiert;
          _ApplicationPtr m_pApp;
          virtual bool DoInit();
          virtual bool AddTermin(
            DATE D,
            char* Subject,
            char* Body,
            bool Reminder,
            int Remindertime);
          virtual bool FillAdressList(char* list);
          COutlookanbindung();
          ~COutlookanbindung();
        };
        

Die verwendeten Pfade für "MSO.DLL" und "MSOUTL.OLB" müssen natürlich auf die gültigen Dateien verweisen. Damit wird dann die MSO-Bibliothek eingebunden.

COutlookanbindung::COutlookanbindung()
        {
          m_Initialisiert = FALSE;
          m_pApp = NULL;
        }
        COutlookanbindung::~COutlookanbindung()
        {
          }
        bool COutlookanbindung::DoInit()
        {
          if ( !m_Initialisiert ) {
            HRESULT hr;
            hr=m_pApp.CreateInstance(__uuidof(Application));
            if (FAILED(hr)) {
              return FALSE;
            }
            m_Initialisiert = TRUE;
          }
          return TRUE;
        }
        bool COutlookanbindung::AddTermin(
         DATE D,
          char* Subject,
          char* Body,
          bool Reminder,
          int Remindertime)
        {
          MAPIFolderPtr pFolder;
          _NameSpacePtr pNS;
          _AppointmentItemPtr pAppointment;
          if ( DoInit()) {
            pFolder=m_pApp->GetNamespace(
                _bstr_t("MAPI"))->GetDefaultFolder( olFolderCalendar);
            pAppointment = m_pApp->CreateItem(olAppointmentItem);
            pAppointment->Start = D;
            pAppointment->Body = Body;
            pAppointment->Subject = Subject;
            pAppointment->BusyStatus = olBusy;
            pAppointment->ResponseRequested = true;
            if (Reminder) {
              pAppointment->ReminderMinutesBeforeStart = Remindertime;
              pAppointment->ReminderSet = true;
            }
            pAppointment->Save();
            return TRUE;
          }
          return FALSE;
        }
        bool COutlookanbindung::FillAdressList(char* list)
        {
          return FALSE;
        }
        

Damit wird der Export an Outlook dann relativ einfach:

extern "C" {
          __declspec(dllexport) void Muster(
              char* s);
          __declspec(dllexport) char* Info();
          __declspec(dllexport) bool AddAppointment(
              char* employee,
              DATE d,
              char* subject,
              char* body,
              bool Reminder,
              int Remindertime);
          __declspec(dllexport) bool RemoveAppointment(
              char* employee,
              DATE d,
              char* subject,
              char* body);
          __declspec(dllexport) bool FillAdressList(
              char* list);
          __declspec(dllexport) bool GetAdressData(
              char* Name,
              char* Vorname,
              char* plz,
              char* Ort,
              char* Telefon,
              char* E_Mail);
        };
        
char* Info()
        {
          return "Outlook Addon 15.12.2006";
        }
        bool AddAppointment(char* employee, DATE d, char* subject,
           char* body, bool Reminder, int Remindertime)
        {
          COutlookanbindung Outlookanbindung;
          return Outlookanbindung.AddTermin( d, subject, body,
          Reminder, Remindertime );;
        }
        bool RemoveAppointment(char* employee, DATE d, char* subject,
          char* body)
        {
          return FALSE;
        }
        bool FillAdressList(char* list)
        {
          COutlookanbindung Outlookanbindung;
          return Outlookanbindung.FillAdressList( list );
        }
        bool GetAdressData(char* Name,char* Vorname, char* plz, char* Ort,
          char* Telefon, char* E_Mail)
        {
          return FALSE;
        }
        

Wenn Sie die Quelltexte compilieren möchten, dann müssen Sie die Pfade zu den DLLs und der erzeugten Datei anpassen.

Wie kann ich eigene Addins erstellen?

Addins sind zusätzliche DLLs, die in kompilierter Form in das Addin-Verzeichnis kopiert werden müssen. Das Programm kümmert sich dann selbstständig darum, dass die Addins geladen und ausgeführt werden.

Die DLLs müssen kompiliert werden. Die verwendete Programmiersprache ist dabei nicht maßgebend. Sie können Ihren Lieblingscompiler verwenden. Natürlich können auch vorgefertigte Addins verwendet werden, die Sie aus dem Internet geladen haben.

Die DLLs müssen eine Reihe von Funktionen zur Verfügung stellen, die die neuen Aufgaben erledigen. Der Aufbau der Addin-DLLs ist bewusst einfach gehalten und beschränkt sich auf wenige Operationen.

extern "C" {
          __declspec(dllexport) void Muster(char* s);
          __declspec(dllexport) char* Info();
          __declspec(dllexport) bool AddAppointment(
            char* employee,
            DATE d,
            char* subject,
            char* body,
            bool Reminder,
            int Remindertime);
          __declspec(dllexport) bool RemoveAppointment(
            char* employee,
            DATE d,
            char* subject,
            char* body);
          __declspec(dllexport) bool FillAdressList(
            char* list);
          __declspec(dllexport) bool GetAdressData(
            char* Name,
            char* Vorname,
            char* plz,
            char* Ort,
            char* Telefon,
            char* E_Mail);
        };