Laden...

Outlook Addressbuch zugriff

Erstellt von HawkY2K vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.480 Views
H
HawkY2K Themenstarter:in
74 Beiträge seit 2006
vor 17 Jahren
Outlook Addressbuch zugriff

Hallo zusammen,

Ich hätte gerne für meine Application so etwas wie einen Outlook Addressbook picker. Hab zwar alle möglichen verfahren gefunden wie man Outlook ansprechen kann, aber nie war irgendwas dabei womit ich das Addressbuch öffnen konnte.

Danke für die Hilfe

Hawk

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,
es gibt eine COM-dll, und die Du als Verweis Deinem Projekt hinzufügen musst, bei Office 2003 heißt sie "Microsoft Outlook 11.0 Object Library".
In der dll stecken dann auch Funktionen fürs Adressbuch.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

S
129 Beiträge seit 2006
vor 17 Jahren

Darüber gibts auch sehr viele Infos @google.de oder MSDN !

//// scarp

H
HawkY2K Themenstarter:in
74 Beiträge seit 2006
vor 17 Jahren

Darüber gibts auch sehr viele Infos @google.de oder MSDN !

Dann post mir doch mal nen Link

S
129 Beiträge seit 2006
vor 17 Jahren

Ja putz mir vorher die Schuhe...

x_O

//// scarp

H
HawkY2K Themenstarter:in
74 Beiträge seit 2006
vor 17 Jahren

Naja wenn du mal geschaut hättest, hättest du auch gesehen, dass es vielleicht gar nicht so trivial ist speziell zu dem Address Book in Outlook etwas in der MSDN bzw Google zu finden. Es gibt zwar was wie z.B.: die CDO Library die dir als Profi ja sicher was sagen wird, aber auch hiermit gibts probleme mit der einbindung.

Aber gut...wahrscheinlich haste eh keinen link gefunden und auf Google oder die MSDN zu verweisen (was ja zugegebenermassen oft auch richtig ist) kann ja eh jeder

484 Beiträge seit 2006
vor 17 Jahren

Es kann doch nicht so schwer sein auf http://msdn2.microsoft.com/en-us/library/ms269108.aspx zu kommen, wenn man die MSDN mal mit ein paar Suchbegriffen wie: Access Outlook Contacts füttert.

🤔

Jörg

H
HawkY2K Themenstarter:in
74 Beiträge seit 2006
vor 17 Jahren

Das ist in der Tat sehr leicht...da war ich auch schon 5 mal, aber es ist dennoch nicht was ich suche.

Ich will das Addressbuch (zu finden unter Tools->Address Book)! Was du mir gezeigt hast ist einfach das ContactFolder was sich links in der Navigations Leiste befindet.

Trotzdem danke für den Tipp war ja schliesslich konstruktiv.

Gehen sollte das ganze wie eben schon geschrieben mit der CDO Library.
Problem ist hier nur: Woher krieg ich die, denn der Download von Microsoft wurde eingestellt und alle anderen CDO Librarys die ich gefunden habe sind funktionsuntüchtig

Gruß

Hawk

S
129 Beiträge seit 2006
vor 17 Jahren

http://www.outlookcode.com/codedetail.aspx?id=773
http://www.microsoft.com/downloads/details.aspx?FamilyID=2714320d-c997-4de1-986f-24f081725d36&displaylang=en

tut mir jetzt leid, aber ich bin wirklich genauso faul zum suchen. ich weiß nich ob das das richtige ist, aber ich bin mir sicher!!! das man dazu was findet.

womöglich ist die vorraussetzung der englischen sprache mächtig zu sein.

es tut mir ein bisschen leid, das ich solchen leuten wie dir, nicht beim suchen helfen und stattdessen unkonstruktive beiträge erstelle, aber ich kann einfach nicht anders!

//// scarp

H
HawkY2K Themenstarter:in
74 Beiträge seit 2006
vor 17 Jahren

Jep der erste link ist super...an dem orientiere ich mich auch die ganze zeit. Allerdings krieg ich diese verfluchte CDO nicht eingebunden.

Merci

H
HawkY2K Themenstarter:in
74 Beiträge seit 2006
vor 17 Jahren

So habs nun endlich hingekriegt.

Problem war das ich bereits auf die Office beta umgestiegen bin und die sagenumwogene CDO.DLL wohl nur mit dem Outlook 2003 zusammenarbeitet, was bedeutet, dass ich mich in nem halben Jahr wieder dem problem stellen werde 🙁

Auch bei Outlook 2003 muss man bei der Installation beachten, dass die "Collaboration Data Objects" Komponente mitinstalliert wird. Anschliessend hab ich die unter "C:\Program Files\Common Files\System\MSMAPI\1033" CDO.DLL erscheinende Bibliothoek noch mittels regsvr32 registriert.

Auch die Microsoft.Office.Interop.Outlook benötigt man um den ausgewählten Recipient in einer einfachen Form zu empfangen.

Hier der Code für die prinzipiell so einfache sache:

  
using System.Reflection;
using Microsoft.Office.Interop.Outlook;
...
Microsoft.Office.Interop.Outlook.Application outlookApplication = new Microsoft.Office.Interop.Outlook.Application();
            NameSpace mapiNamespace = outlookApplication.GetNamespace("mapi");
            
            try
            {
                MAPI.Recipients recipients = null;
                MAPI.SessionClass outlookSession = new MAPI.SessionClass();

                outlookSession.MAPIOBJECT = outlookApplication.Session.MAPIOBJECT;
                Type recipientType = outlookSession.GetType();

                object[] arguments = new Object[] { Type.Missing, "Empfänger Auswählen", Type.Missing, Type.Missing, 1, "An" };
                recipients = (MAPI.Recipients)recipientType.InvokeMember("AddressBook", BindingFlags.InvokeMethod, null, outlookSession, arguments);

                for (int i = 1; i <= (int)recipients.Count; i++)
                {
                    object myItem = recipients.get_Item(i);
                    System.Type myRecipientType = myItem.GetType();

                    string myEntryID = (string)myRecipientType.InvokeMember("ID", BindingFlags.GetProperty, null, myItem, null);
                    
                    Recipient myRecpt = (Recipient)outlookApplication.Session.GetRecipientFromID(myEntryID);
                    
                    if (myRecpt != null)
                    {
                        Console.WriteLine(myRecpt.Name);
                    }
                }
                recipients = null;
                outlookSession = null;
                
            }
            catch
            {

            }
        }

Jetzt muss ich nur noch wissen wie ich dieses so lästig aufpoppende Fenster
"Allow Access for blablabla minutes" wegkriege, aber da wirds wohl hoffentlich was geben.

Gruß

Hawk

S
129 Beiträge seit 2006
vor 17 Jahren

Jap...

http://www.dimastr.com/redemption/

Gibt auch Treffer wenn du hier nach "Redemption" suchst.

//// scarp

H
HawkY2K Themenstarter:in
74 Beiträge seit 2006
vor 17 Jahren

Seh schon...wir werden doch noch Freunde...

Merci

3.728 Beiträge seit 2005
vor 17 Jahren
CDO macht Probleme

CDO sollte man für zukünftige Projekte nicht mehr verwenden. Es gibt in der Library jede Menge ungereimtheiten. Z.B. wird Deine Anwendung einfach unkontrolliert und sporadisch abschmieren, wenn Du Multithreading einsetzt.

Vergiss CDO und nimm das Outlook-Objektmodell. Da gibt es sehr wohl Klassen, um auf Adressbücher (Nicht die Kontakte) zuzugreifen. Das steht sogar in der normalen Outlook-Hilfe: