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, Díl, Hobby, Emailová adresa, Trik


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

17 tipů, jak se nenechat hacknout

17 tipů, jak se nenechat hacknout

** Přehled nejdůležitějších věcí, které je nutné dodržovat pro digitální bezpečnosti ** Hlavní je používat mozek ** Chraňte soukromé informace

Karel Javůrek | 25

Temný režim a spousta vychytávek. Vyzkoušeli jsme nový macOS 10.14 Mojave

Temný režim a spousta vychytávek. Vyzkoušeli jsme nový macOS 10.14 Mojave

** Vyzkoušeli jsme veřejnou betu macOS 10.14 Mojave ** Hlavní novinkou je temný režim a velký důraz na soukromí ** Jako první beta je systém překvapivě rychlý a dobře použitelný.

Martin Miksa | 35

Sex a rozmnožování při mezihvězdné cestě: Kolik lidí je potřeba pro let k Proximě Centauri?

Sex a rozmnožování při mezihvězdné cestě: Kolik lidí je potřeba pro let k Proximě Centauri?

** Vědci spočítali, jak velká by musela být posádka pro vícegenerační let k nejbližší hvězdné soustavě ** Proxima Centauri se nachází 4,3 světelných let od nás ** Za současných technologií bychom k ní letěli 6300 let

Petr Kubala | 58

15 věcí, které umí Windows 10, ale možná o nich vůbec nevíte

15 věcí, které umí Windows 10, ale možná o nich vůbec nevíte

** Systém Windows 10 umí spoustu užitečných drobností ** O mnoha praktických funkcích pravděpodobně ani nevíte ** Poznejte užitečné tipy, které se vám mohou hodit každý den

Vladislav Kluska | 39

Galerie: Navštívili jsme Cosmos Discovery. Uvidíte Sojuz, Mir i kokpit raketoplánu

Galerie: Navštívili jsme Cosmos Discovery. Uvidíte Sojuz, Mir i kokpit raketoplánu

** Brno hostí do konce léta unikátní výstavu Cosmos Discovery ** Uvidíte zde celou historii kosmonautiky ** Stovky originálů i detailních maket

Jakub Čížek, Antonín Trčálek | 4


Aktuální číslo časopisu Computer

Jak mobily určují svoji polohu?

Velký test notebooků pro studenty

Nejlepší reproduktory na párty

Služby a aplikace pro výuku angličtiny