WEB开发网
开发学院软件开发VC 获取本机通讯薄的内容 阅读

获取本机通讯薄的内容

 2006-07-22 11:45:17 来源:WEB开发网   
核心提示: 第二、读取Office2000中所带Outlook2K中通讯薄方法基本思路由于Outlook2000下支持内部COM接口,可以利用此接口来读取其内部通讯薄中主要内容,获取本机通讯薄的内容(2),具体实现一、 导入Outlook2000的库文件// 导入读取Outlook2000中通讯薄内容

第二、读取Office2000中所带Outlook2K中通讯薄方法

基本思路

由于Outlook2000下支持内部COM接口,可以利用此接口来读取其内部通讯薄中主要内容。

具体实现

一、 导入Outlook2000的库文件

// 导入读取Outlook2000中通讯薄内容所需库
#import "e:\Program Files\Microsoft Office\Office\mso9.dll" named_guids
#import "e:\Program Files\Microsoft Office\Office\MSOUTL9.olb" \
  no_namespace exclude("_IRecipientControl", "_DRecipientControl")
二、 读取具体内容的详细代码 _ApplicationPtr pApp;
_ItemsPtr pItems;
MAPIFolderPtr pFolder;
_ContactItemPtr pContact;
    
HRESULT hr;
try
{  
  hr=pApp.CreateInstance(__uuidof(Application));
  if (FAILED(hr))
  {
    MessageBox("Outlook实例创建失败","错误",MB_OK);
    return;
  }
  // 获取默认Outlook中联系人文件夹
  pFolder=pApp->GetNamespace(_bstr_t("MAPI"))->GetDefaultFolder(olFolderContacts);
  if (pFolder==NULL)
  {
    MessageBox("没有发现默认的Outlook联系人文件夹","错误!");
    return;
  }
  else // 否则自行选择Outlook中一指定文件夹
  {
    pFolder=pApp->GetNamespace(_bstr_t("MAPI"))->PickFolder();
    if (pFolder==NULL)
      return;
    if (pFolder->GetDefaultItemType()!=olContactItem)  // 不是联系人
    {
      MessageBox("选择不是联系人文件夹","错误");
      return;
    }
  }
  pItems=pFolder->GetItems();
  if (pItems==NULL)
  {
    MessageBox("不能得到联系人条目","错误");
    return;
  }
    
  pContact=pItems->GetFirst();
    
  m_ListEmail.ResetContent();
  while(1)
  {
    if (pContact==NULL)
      break;
    CString strTemp;
    strTemp=(char *)pContact->GetFullName();
    strTemp=strTemp + "<";
    strTemp=strTemp + (char *)pContact->GetEmail1Address();
    strTemp=strTemp + ">";
    m_ListEmail.AddString(strTemp);
    pContact=pItems->GetNext();
  }
}
catch(_com_error &e)
{
  MessageBox((char *)e.Description());
}

参考文献:

Importing Contacts from Outlook -- Deepesh Dhapola

Accessing the Windows Address Book – Code4Food

上一页  1 2 

Tags:获取 本机 通讯

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接