16,471
社区成员
发帖
与我相关
我的任务
分享
//以下三个是读取联系人信息的头文件
#define INITGUID
#include <objbase.h>
#include <initguid.h>
#include <pimstore.h> //核心库文件
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//获取联系人姓名
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool GetConnectInfo()
{
HRESULT hr;
IPOutlookApp * polApp = NULL;
IFolder *pFolder = NULL;
IPOutlookItemCollection * pItemCol = NULL;
int nItem = 0;
wchar_t tempname[120];//姓名
if (FAILED(CoInitializeEx(NULL, 0)))
{
return false;
}
hr = CoCreateInstance(_uuidof(Application), NULL,
CLSCTX_INPROC_SERVER,_uuidof(IPOutlookApp), (LPVOID*)&polApp);
if (FAILED(hr))
{
CoUninitialize();
return false;
}
hr = polApp->Logon(NULL);
if (FAILED(hr))
{
CoUninitialize();
return false;
}
hr = polApp->GetDefaultFolder(olFolderContacts, &pFolder);
if (FAILED(hr))
{
CoUninitialize();
return false;
}
hr = pFolder->get_Items(&pItemCol);
if (FAILED(hr))
{
CoUninitialize();
return false;
}
hr = pItemCol->get_Count(&nItem);
if (FAILED(hr))
{
CoUninitialize();
return false;
}
BSTR bstrFirstName;
BSTR bstrLastName;
BSTR bstrMobileTelephone;
BSTR bstrBusinessTelephone;
BSTR bstrHomeTelephone;
IContact * pContact;
if(nItem > MAX_CONNECT) nItem = MAX_CONNECT;
if(nItem != 0)//有记录的时候
myContact = new Contact_Info[nItem];
ConnectTotal = 0;
if(myContact != NULL)
{
for (int i=1; i<= nItem; i++)//nItem
{
hr = pItemCol->Item(i, reinterpret_cast<IDispatch**>(&pContact));//
if (SUCCEEDED(hr))
{
memset(myContact[ConnectTotal].name,0,
sizeof(myContact[ConnectTotal].name));
memset(myContact[ConnectTotal].bstrBusiness,0,
sizeof(myContact[ConnectTotal].bstrBusiness));
memset(myContact[ConnectTotal].bstrHome,0,
sizeof(myContact[ConnectTotal].bstrHome));
memset(myContact[ConnectTotal].bstrMobile,0,
sizeof(myContact[ConnectTotal].bstrMobile));
memset(myContact[ConnectTotal].bstrPhone,0,
sizeof(myContact[ConnectTotal].bstrPhone));
myContact[ConnectTotal].phonetotal = 0;
pContact->get_FirstName(&bstrFirstName); //姓
pContact->get_LastName(&bstrLastName); //名
pContact->get_MobileTelephoneNumber(&bstrMobileTelephone);//移动电话
pContact->get_BusinessTelephoneNumber(&bstrBusinessTelephone);//商务电话
pContact->get_HomeTelephoneNumber(&bstrHomeTelephone);//家庭电话
//printf(L"bstrFirstName = %s\n", bstrFirstName);
if(bstrFirstName[0] != 0)
{
wcscpy(tempname,bstrLastName);
wcscat(tempname,bstrFirstName);
if(wcslen(tempname)>120)
{
tempname[119] = 0;
}
wcscpy(myContact[ConnectTotal].name,tempname);
}
else if(bstrLastName[0] != 0)
{
wcscpy(tempname,bstrLastName);
if(wcslen(tempname)>120)
{
tempname[119] = 0;
}
wcscpy(myContact[ConnectTotal].name,tempname);
}
if(CheckNameLegal(myContact[ConnectTotal].name))
{
if(bstrMobileTelephone[0] != 0)
{
wcscpy(tempname,bstrMobileTelephone);
if(wcslen(tempname)>30)
{
tempname[29] = 0;
}
wcscpy(myContact[ConnectTotal].bstrMobile,tempname);
wcscpy(myContact[ConnectTotal].bstrPhone,tempname);
myContact[ConnectTotal].phonetotal++;
}
if(bstrBusinessTelephone[0] != 0)
{
wcscpy(tempname,bstrBusinessTelephone);
if(wcslen(tempname)>30)
{
tempname[29] = 0;
}
wcscpy(myContact[ConnectTotal].bstrBusiness,tempname);
wcscpy(myContact[ConnectTotal].bstrPhone,tempname);
myContact[ConnectTotal].phonetotal++;
}
if(bstrHomeTelephone[0] != 0)
{
wcscpy(tempname,bstrHomeTelephone);
if(wcslen(tempname)>30)
{
tempname[29] = 0;
}
wcscpy(myContact[ConnectTotal].bstrHome,tempname);
myContact[ConnectTotal].phonetotal++;
wcscpy(myContact[ConnectTotal].bstrPhone,tempname);
}
ConnectTotal++;
}
SysFreeString(bstrLastName);
SysFreeString(bstrFirstName);
SysFreeString(bstrMobileTelephone);
SysFreeString(bstrBusinessTelephone);
SysFreeString(bstrHomeTelephone);
}
}
}
polApp->Logoff();
polApp->Release();
CoUninitialize();
return true;
}