Отображение адресной книги Outlook в приложении Delphi XE:

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

ТИА


person Vector    schedule 24.10.2011    source источник


Ответы (2)


Отказ от ответственности. Определенно можно сделать это через COM, но Outlook будет отображать предупреждения о том, что стороннее приложение обращается к адресной книге (и это правильно). Если вы хотите избежать этих предупреждений, вы можете запустить код из надстройки Outlook, прибегнуть к MAPI или использовать Outlook Redemption, который представляет собой продвинутую оболочку 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;
person Paul-Jan    schedule 24.10.2011
comment
Спасибо за подробности - не было ясно, что MAPI - это другой подход, чем объектная модель Outlook - не в курсе интеграции Office / Exchange и т. Д. - person Vector; 24.10.2011

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

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

Простой MAPI

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

person LU RD    schedule 24.10.2011
comment
+1 - Я, вероятно, в конечном итоге буду использовать Easy MAPI, но я указал на другой ответ, потому что @Paul-Jan объяснил различные варианты и т. Д. Спасибо. - person Vector; 24.10.2011