我有一个Delphi XE应用程序,我想在我的Delphi应用程序中弹出Outlook使用的地址簿对话框 - 我假设有COM类支持这个?完成这项工作的最佳方法是什么?使用Outlook 2010,平台是Win7-64。
TIA
答案 0 :(得分:2)
答案 1 :(得分: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;