Ich habe mich gerade mit diesem Thema beschäftigt.
Alles was ich dazu gefunden habe, erschien mir äußerst kompliziert.
Um andere jetzt die Stundenlange suche im Internet zu ersparen, möchte ich meine Lösung kurz aufzeigen.
Die Lösung für mich heißt Redemption.dll
Hier ist der Link zur Outlook Redemption:
www.dimastr.com
oder direkt herunterladen unter:
Redemption.zip
Dann die Install.exe ausführen.
Hier ist ein kleines Beispielprogramm:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
olFolderContacts = $0000000A;
type
TForm1 =
class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FOutlook : Variant;
FMAPI : Variant;
FSafeContact : Variant;
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
ComObj;
procedure TForm1.FormCreate(Sender: TObject);
begin
FOutlook := CreateOleObject('
Outlook.Application');
FMAPI := FOutlook.GetNameSpace('
MAPI');
FMAPI.Logon;
FSafeContact := createoleobject('
redemption.SafeContactItem');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FMAPI.Logoff;
FSafeContact := Unassigned;
FOutlook := Unassigned;
FMAPI := Unassigned;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ContactList: Variant;
begin
ContactList := FMAPI.GetDefaultFolder(olFolderContacts);
try
FSafeContact.Item := ContactList.Items.Item(1);
Edit1.Text := FSafeContact.Email1Address;
finally
ContactList := Unassigned;
end;
end;
Normalerweise würde beim Lesen der Email1Address von Outlook eine Sicherheitsmeldung kommen.
Dies sollte jetzt dank der Redemption.dll nicht mehr passieren.
Alle andere Zugriffe wie z.B. auf Termine oder EMail funktionieren ähnlich.