我有一個Delphi XE應用程序,我想彈出Outlook應用程序內使用的地址簿對話框 - 我假設有COM類支持此類?完成這件事的最好方法是什麼?平臺是Win7-64與Outlook 2010在Delphi XE應用程序中顯示Outlook通訊簿:
TIA
我有一個Delphi XE應用程序,我想彈出Outlook應用程序內使用的地址簿對話框 - 我假設有COM類支持此類?完成這件事的最好方法是什麼?平臺是Win7-64與Outlook 2010在Delphi XE應用程序中顯示Outlook通訊簿:
TIA
聲明:這肯定可以通過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;
感謝您的詳細信息 - 不清楚MAPI是否與Outlook對象模型不同 - 不適合Office/Exchange集成等。 – Vector