Отображение адресной книги Outlook в приложении Delphi XE: - PullRequest
1 голос
/ 24 октября 2011

У меня есть приложение Delphi XE, и я хотел бы открыть диалоговое окно адресной книги, которое Outlook использует из моего приложения Delphi - я предполагаю, что существуют классы COM для поддержки этого? Какой лучший способ сделать это? Платформа Win7-64 с Outlook 2010.

ТИА

Ответы [ 2 ]

2 голосов
/ 24 октября 2011

Отказ от ответственности: Определенно возможно сделать это через COM, но Outlook отобразит предупреждения о том, что стороннее приложение обращается к адресной книге (и это справедливо). Если вы хотите избежать этих предупреждений, вы можете запустить код из надстройки Outlook, прибегнуть к MAPI или использовать Погашение Outlook , которое в основном представляет собой расширенную оболочку для MAPI, напоминающую объект Outlook. Модель.

Объектная модель Outlook предлагает диалоговое окно SelectNamesDialog для отображения адресной книги. Он легко настраивается, и вы также можете инициализировать его с помощью пользовательских наборов адресов.

В качестве небольшого примера приведем код, который всплывает в адресной книге в режиме множественного выбора. Для краткости он использует позднюю привязку (OleVariants). Возможно, вы захотите использовать раннее связывание в производственном коде.

procedure TForm1.Button1Click(Sender: TObject);
var
  application: OleVariant;
  dialog: OleVariant;
  i: Integer;
  recipients: String;
  recipient: OleVariant;

begin
  application := createOleObject( 'Outlook.Application' );

  // Obtain the dialog
  dialog := application.session.getSelectNamesDialog;

  // Only show the a single 'add' field, multiselect
  dialog.setDefaultDisplayMode( 6 ); // 6 = olDefaultDelegates

  // Display the dialog
  dialog.display;

  // Display selection
  recipients := '';
  for i := 1 to dialog.recipients.count do
  begin
      recipient := dialog.recipients.item( i );

      recipients := recipients + recipient.name + #13#10;
  end;

  showMessage( recipients );
end;
2 голосов
/ 24 октября 2011

Чтобы сделать что-то подобное, вам нужно поддерживать расширенный интерфейс MAPI.

Вот ссылка на компонент, который поддерживает это в Win7-64 Outlook-2010.

Easy MAPI

Поддерживает выполнение диалоговых окон адресной книги.

...