void DeleteAllSysContact()
{
if(IDYES == MessageBox(_T("你确定要删除所有系统通讯录联系人?"), _T("提示"), MB_YESNO|MB_ICONQUESTION))
{
IPOutlookApp * polApp = NULL ;
IFolder * pFolder = NULL;
IPOutlookItemCollection * pItemCol = NULL;
if(SUCCEEDED(CoInitializeEx(NULL, 0)))
{
if(S_OK == CoCreateInstance(CLSID_Application, NULL, CLSCTX_INPROC_SERVER,
IID_IPOutlookApp, reinterpret_cast<void **>(&polApp)))
{
if(SUCCEEDED(polApp->Logon(NULL)))
{
if(SUCCEEDED(polApp->GetDefaultFolder(olFolderContacts, &pFolder)))
{
if(SUCCEEDED(pFolder->get_Items(&pItemCol)))
{
int iItemCount = 0;
pItemCol->get_Count(&iItemCount);
if (iItemCount > 0)
{
int i;
int error;
error = GetLastError();
for (i = 0; i < iItemCount; i++)
{
if (S_OK != pItemCol-> Remove(1))
{
error = GetLastError();
MessageBox(_T("删除失败!请稍候再试!"), _T("提示"), 0);
break;
}
}
if(i == iItemCount)
{
MessageBox(_T("全部删除成功!"), _T("提示"), 0);
}
pItemCol->Release();
}
else
{
MessageBox(_T("没有可删除的联系人!"), _T("提示"), 0);
}
}
}
pFolder->Release();
}
polApp->Logoff();
}
polApp->Release();
}
CoUninitialize();
}
{
IPOutlookApp * polApp = NULL ;
IFolder * pFolder = NULL;
IPOutlookItemCollection * pItemCol = NULL;
if(SUCCEEDED(CoInitializeEx(NULL, 0)))
{
if(S_OK == CoCreateInstance(CLSID_Application, NULL, CLSCTX_INPROC_SERVER,
IID_IPOutlookApp, reinterpret_cast<void **>(&polApp)))
{
if(SUCCEEDED(polApp->Logon(NULL)))
{
if(SUCCEEDED(polApp->GetDefaultFolder(olFolderContacts, &pFolder)))
{
if(SUCCEEDED(pFolder->get_Items(&pItemCol)))
{
int iItemCount = 0;
pItemCol->get_Count(&iItemCount);
if (iItemCount > 0)
{
int i;
int error;
error = GetLastError();
for (i = 0; i < iItemCount; i++)
{
if (S_OK != pItemCol-> Remove(1))
{
error = GetLastError();
MessageBox(_T("删除失败!请稍候再试!"), _T("提示"), 0);
break;
}
}
if(i == iItemCount)
{
MessageBox(_T("全部删除成功!"), _T("提示"), 0);
}
pItemCol->Release();
}
else
{
MessageBox(_T("没有可删除的联系人!"), _T("提示"), 0);
}
}
}
pFolder->Release();
}
polApp->Logoff();
}
polApp->Release();
}
CoUninitialize();
}
}
注意:删除联系人调用的函数
Remove
,参数一定要小心,不要写成i,因为它表示的是删除第几个联系人。只需要每次都删除第一个联系人即可。
类似的,删除SIM卡上的联系人也应该注意索引问题。
void DeleteAllSIMContact()
{
if(IDYES == MessageBox(_T("你确定要删除所有SIM卡联系人?"), _T("提示"), MB_YESNO|MB_ICONQUESTION))
{
SHEnableSoftkey(m_hMenu, 0, TRUE, FALSE);
SHEnableSoftkey(m_hMenu, 1, TRUE, FALSE);
SetCursor(LoadCursor(_Module.GetModuleInstance(), IDC_WAIT));
{
SHEnableSoftkey(m_hMenu, 0, TRUE, FALSE);
SHEnableSoftkey(m_hMenu, 1, TRUE, FALSE);
SetCursor(LoadCursor(_Module.GetModuleInstance(), IDC_WAIT));
HSIM hSIM;
if(SUCCEEDED(SimInitialize(SIM_INIT_NONE, NULL, NULL, &hSIM)))
{
SIMPHONEBOOKENTRY SIMPhoneEntry;
DWORD dwUsed = 0;
DWORD dwTotal = 0;
if(SUCCEEDED(SimGetPhonebookStatus(hSIM, SIM_PBSTORAGE_SIM, &dwUsed, &dwTotal)))
{
if(dwTotal <= 0)
{
MessageBox(_T("没有任何SIM卡联系人!"), _T("提示"), 0);
}
else
{
int i ;
for(i = 0; i<dwTotal; i++)
{
if(S_OK != SimDeletePhonebookEntry(hSIM, SIM_PBSTORAGE_SIM, i+1))
{
MessageBox(_T("删除SIM卡联系人失败!请稍后再试!"), _T("提示"), 0);
break;
}
}
if(i == dwTotal)
{
MessageBox(_T("删除SIM卡联系人成功!"), _T("提示"), 0);
}
}
}
}
SimDeinitialize(hSIM);
SHEnableSoftkey(m_hMenu, 0, TRUE, TRUE);
SHEnableSoftkey(m_hMenu, 1, TRUE, TRUE);
SetCursor(LoadCursor(_Module.GetModuleInstance(), IDC_NO));
}
if(SUCCEEDED(SimInitialize(SIM_INIT_NONE, NULL, NULL, &hSIM)))
{
SIMPHONEBOOKENTRY SIMPhoneEntry;
DWORD dwUsed = 0;
DWORD dwTotal = 0;
if(SUCCEEDED(SimGetPhonebookStatus(hSIM, SIM_PBSTORAGE_SIM, &dwUsed, &dwTotal)))
{
if(dwTotal <= 0)
{
MessageBox(_T("没有任何SIM卡联系人!"), _T("提示"), 0);
}
else
{
int i ;
for(i = 0; i<dwTotal; i++)
{
if(S_OK != SimDeletePhonebookEntry(hSIM, SIM_PBSTORAGE_SIM, i+1))
{
MessageBox(_T("删除SIM卡联系人失败!请稍后再试!"), _T("提示"), 0);
break;
}
}
if(i == dwTotal)
{
MessageBox(_T("删除SIM卡联系人成功!"), _T("提示"), 0);
}
}
}
}
SimDeinitialize(hSIM);
SHEnableSoftkey(m_hMenu, 0, TRUE, TRUE);
SHEnableSoftkey(m_hMenu, 1, TRUE, TRUE);
SetCursor(LoadCursor(_Module.GetModuleInstance(), IDC_NO));
}
}
注意到
SimDeletePhonebookEntry中的索引值是i+1
,也就是需要从1开始,而不是0!否则会无法删除成功。