Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Auslesen von Outlook-Kontakten (Outlook 2010) (https://www.delphipraxis.net/169372-auslesen-von-outlook-kontakten-outlook-2010-a.html)

Bolt Thrower 16. Jul 2012 07:34

Auslesen von Outlook-Kontakten (Outlook 2010)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo liebe DP-Mitglieder,

in meinem Programm verwende ich die folgende Prozedur von den Schweizern (http://www.swissdelphicenter.ch/de/showcode.php?id=897), um meine Outlook-Kontakte auszulesen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  olFolderContacts = $0000000A;
var
  outlook, NameSpace, Contacts, Contact: OleVariant;
  i: Integer;
begin
  outlook := CreateOleObject('Outlook.Application');
  NameSpace := outlook.GetNameSpace('MAPI');

  Contacts := NameSpace.GetDefaultFolder(olFolderContacts);
  for i := 1 to Contacts.Items.Count do
  begin
    Contact := Contacts.Items.Item(i);
    {now you can read any property of contact. For example, full name and
    email address}
    ShowMessage(Contact.FullName + ' <' + Contact.Email1Address + '>');
  end;

  Outlook := UnAssigned;
end;
Nun ist es so, dass ich in meinen Outlook-Kontakten zunächst den Ordner "Meine Kontakte" vorfinde, unter dem sich die Kontakte "Kontakte", "Vorgeschlagene Kontakte" und "Xing" befinden, also drei verschiedene Kontakt-Kategorien (zur Verdeutlichung habe ich die Struktur im "jpg"-Format an dieses Thema angehängt). Wenn ich die oben genannte Prozedur verwende, werden nur die Kontakte aus "Kontakte", also der ersten Kategorie ausgelesen.

Wie kann ich die Prozedur abändern, dass die Kontakte aus "Kontakte", "Vorgeschlagene Kontakte" und "Xing" ausgelesen werden?

Schon einmal vielen Dank im Voraus und Grüße,

Bolt Thrower

RWarnecke 16. Jul 2012 07:43

AW: Auslesen von Outlook-Kontakten (Outlook 2010)
 
Wenn ich es richtig verstanden habe rufst Du auch nur den KonatkteOrdner in Deinen Kontakten ab (Bei Google suchenolFolderContacts). Ich habe diese Seite gefunden, vielleicht hilft Dir die ja weiter.

Edit:
Ungetestet könnte eventuell das hier funktionieren :
Delphi-Quellcode:

procedure TForm1.Button1Click(Sender: TObject);
const
  olFolderContacts = $0000000A;
var
  outlook, NameSpace, Contacts, ContactFolder, Contact: OleVariant;
  i: Integer;
begin
  outlook := CreateOleObject('Outlook.Application');
  NameSpace := outlook.GetNameSpace('MAPI');

  Contacts := NameSpace.GetDefaultFolder(olFolderContacts);
  ContactFolder := Contacts.Folder.GetFirst;
  for i := 1 to Contacts.Items.Count do
  begin
    Contact := Contacts.Items.Item(i);
    {now you can read any property of contact. For example, full name and
    email address}
    ShowMessage(Contact.FullName + ' <' + Contact.Email1Address + '>');
  end;

  Outlook := UnAssigned;
end;

Bolt Thrower 16. Jul 2012 08:45

AW: Auslesen von Outlook-Kontakten (Outlook 2010)
 
Hallo Rolf,

vielen Dank für den Link und die von Dir angegebene Prozedur.

Leider tritt bei diesem Aufruf
Delphi-Quellcode:
ContactFolder := Contacts.Folder.GetFirst;
die Fehlermeldung "Die Methode 'Folder' wird vom Automatisierungsobjekt nicht unterstützt" auf. Wenn ich diese Zeile nun auskommentiere, läuft die Prozedur zwar durch, listet mir aber wieder nur die Kontakte aus "Kontakte" auf, nicht die aus "Vorgeschlagene Kontakte" und "Xing".

Wenn ich das richtig verstanden habe, handelt es sich hierbei um drei Adressbücher, muss ich die vielleicht anders auslesen?

Grüße,

Bolt Thrower

Jumpy 16. Jul 2012 11:00

AW: Auslesen von Outlook-Kontakten (Outlook 2010)
 
Es müsste glaub ich Folders heißen, wie z.B. hier:

ContactFolder = Namespace.Folders.item("Öffentliche Ordner").Folders.item("Alle Öffentlichen Ordner")

Bolt Thrower 17. Jul 2012 10:21

AW: Auslesen von Outlook-Kontakten (Outlook 2010)
 
Hallo Jumpy,

danke für Deinen Hinweis, "Folders" war tatsächlich korrekt, leider werden die Kontakte aus "Vorgeschlagene Kontakte" und "Xing" dennoch nicht aufgelistet.

Grüße,

Bolt Thrower

Jumpy 17. Jul 2012 10:34

AW: Auslesen von Outlook-Kontakten (Outlook 2010)
 
Sprichst du sie denn auch nacheinander an?

Delphi-Quellcode:
ContactFolder := Namespace.Folders.item("Meine Kontakte").Folders.item("Kontakte")
for i := 1 to ContactFolder.Items.Count do
  begin
    Contact := ContactFolder.Items.Item(i);
    ShowMessage(Contact.FullName + ' <' + Contact.Email1Address + '>');
  end;


ContactFolder := Namespace.Folders.item("Meine Kontakte").Folders.item("Vorgeschlagene Kontakte")
for i := 1 to ContactFolder.Items.Count do
  begin
    Contact := ContactFolder.Items.Item(i);
    ShowMessage(Contact.FullName + ' <' + Contact.Email1Address + '>');
  end;

//usw.

Bummi 17. Jul 2012 10:39

AW: Auslesen von Outlook-Kontakten (Outlook 2010)
 
ich hatte unter http://www.delphipraxis.net/167694-e...-kontakte.html
mal einen Source hochgelegt, vielleicht kannst Du damit etwas anfangen?

Bolt Thrower 18. Jul 2012 09:40

AW: Auslesen von Outlook-Kontakten (Outlook 2010)
 
Danke für den Sourcecode, Bummi, ich kann mir vorstellen, dass er genau das ist, was ich brauche. Werde ich auf jeden Fall testen.

Grüße,

Bolt Thrower


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz