Tipy a triky v Delphi, díl 85. - Microsoft Outlook

Vzájemná spolupráce jednotlivých (převážně kancelářských) aplikací je jednoznačně trendem dnešní doby. Proč tedy i náš program nenaučit nějakou tu spolupráci s cizí aplikací? Dnes si vezmeme na mušku konkrétně Microsoft Outlook.
Aby hned na začátku nedošlo k omylu, budeme se zabývat programem MS Outlook a ne Outlook Express! To jen tak pro upřesnění, i když věřím, že to byla zbytečná poznámka a všichni znají rozdíl mezi "velkým" a "malým" Outlookem.

A o jaké že spolupráci bude řeč? Naučíme se získat z Outlooku databázi kontaktů. To je jistě velmi užitečné a využitelné (nejen) v řadě kancelářských aplikací. Není pak nutné mít pro každou aplikaci zvláštní seznam přátel či obchodních kontaktů a může se čerpat jen z jednoho zdroje. A tím bude v našem případě právě Outlook, který je zřejmě v kancelářích či firmách jeden z nejpoužívanějších.

Nejjednodušší bude opět využít technologie OLE, která nám umožní poměrně snadno veškeré informace o kontaktech načíst. Tentokrát si není třeba (jako v jednom z předchozích příkladů s Excelem) lámat hlavu tím, jestli uživatel má nebo nemá Outlook nainstalován. Buď jej má a pak není problém a nebo jej nemá a získávání kontaktů je pak bezpředmětné.

K celému příkladu bude opět potřeba knihovna ComObj a když zdrojový kód porovnáte s tím, který jsme před časem použili na Excel, najdete velmi podobné konstrukce.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComObj, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
  olFolderContacts = $0000000A;
var
  outlook, NameSpace, Contacts, Contact: OleVariant;
  i: Integer;
begin
  outlook := CreateOleObject(`Outlook.Application`);
  try
  NameSpace := outlook.GetNameSpace(`MAPI`);
  Contacts := NameSpace.GetDefaultFolder(olFolderContacts);
  for i := 1 to Contacts.Items.Count do
  begin
    try
    Contact := Contacts.Items.Item(i);
    Memo1.Lines.Add(Contact.FullName + ` <` + Contact.Email1Address + `>`);
    except
    end;
  end;
  finally
  Outlook := UnAssigned;
  end;
end;

end.

Po stisknutí tlačítka bude proveden pokus o načtení kontaktů z Outlooku a všechny budou postupně vypsány do komponenty Memo.

A co se vlastně bude vypisovat? Pohledem do zdrojáku zjistíte, že to bude položka FullName a Email1Address, tedy celé jméno a primární emailová adresa. Adresář obsahuje pro jednotlivé záznamy pochopitelně mnohem více položek. Jejich seznam následuje:

Birthday
Business2TelephoneNumber
BusinessAddress
BusinessAddressCity
BusinessAddressCountry
BusinessAddressPostalCode
BusinessAddressPostOfficeBox
BusinessAddressState
BusinessAddressStreet
BusinessFaxNumber
BusinessHomePage
BusinessTelephoneNumber
CompanyAndFullName
CompanyMainTelephoneNumber
CompanyName
ComputerNetworkName
Department
Email1Address
Email1AddressType
Email1DisplayName
Email2Address
Email2AddressType
Email2DisplayName
Email3Address
Email3AddressType
Email3DisplayName
FirstName
FTPSite
FullName
FullNameAndCompany
GovernmentIDNumber
Hobby
Home2TelephoneNumber
HomeAddress
HomeAddressCity
HomeAddressCountry
HomeAddressPostalCode
HomeAddressPostOfficeBox
HomeAddressState
HomeAddressStree
HomeFaxNumber
HomeTelephoneNumber
Initials
ISDNNumber
JobTitle
Language
LastName
LastNameAndFirstName
MailingAddress
MailingAddressCity
MailingAddressCountry
MailingAddressPostalCode
MailingAddressPostOfficeBox
MailingAddressState
MailingAddressStreet
MiddleName
NickName
OfficeLocation
OrganizationalIDNumber
PersonalHomePage
PrimaryTelephoneNumber
Profession
Suffix
Title
WebPage

Myslím, že jejich použití je jasné a že není třeba ani složitě jednotlivé položky překládat. Snadno tak můžete získat jen ty informace, která vás zajímají.

Diskuze (2) Další článek: SETI@home obsahuje chybu

Témata článku: Software, Microsoft, Programování, Outlook, Trik, Hobby, Díl, Emailová adresa


Určitě si přečtěte

Co udělat s novým počítačem s Windows, než ho začnete používat

Co udělat s novým počítačem s Windows, než ho začnete používat

** Čerstvě zakoupený počítač je vhodné trochu připravit ** Věnujte pozornost instalaci a předinstalovaným aplikacím ** Zamyslete se nad zálohou a antivirem

David Polesný | 83

Portál občana už funguje. Na státní web vypadá až překvapivě použitelně

Portál občana už funguje. Na státní web vypadá až překvapivě použitelně

** Portál občana už funguje, vyřídíte na něm první požadavky ** Funkce se budou postupně rozšiřovat ** Web je docela moderní a přehledný

David Polesný | 66

Osudová havárie Concordu: Před 18 lety přišel konec nadzvukových dopravních letadel

Osudová havárie Concordu: Před 18 lety přišel konec nadzvukových dopravních letadel

** Concorde byl nejrychlejším dopravním letadlem ** Atlantik dokázal přeletět za cca 3 až 3,5 hodiny ** Před osmnácti lety tragická havárie provoz těchto letadel prakticky ukončila

David Polesný, Jiří Černý | 39

Kde se bere elektřina v zásuvce? Poznejte 10 tajemství venkovních stožárů s dráty

Kde se bere elektřina v zásuvce? Poznejte 10 tajemství venkovních stožárů s dráty

Elektřina se vyrábí v elektrárnách, ale do zásuvek v našich domovech to pak má ještě hodně daleko. Dnes se na tuhle dlouhou cestu podíváme.

David Polesný | 85

Photolemur 3: Prostě do něj přetáhnete fotky a začne se dít magie. Tedy údajně...

Photolemur 3: Prostě do něj přetáhnete fotky a začne se dít magie. Tedy údajně...

** Je lepší nabušený Photoshop, nebo program s jedním tlačítkem? ** Photolemur si myslí to druhé ** Tento fotoeditor neumí skoro nic, a přitom (skoro) všechno

Jakub Čížek | 21