Windows Mobile上联系人的信息可分别存储在手机和SIM卡中。我尝试过从手机,即所谓的Outlook联系人中读取联系人的信息,但是还没有尝试过从sim卡中读取联系人的信息,心里也一直默认为难吧。今天查了一下,发现竟然这么简单,相比outlook的读取方式来说,简单很多。
我们先来定义个结构
typedef struct {
TCHAR szName[32];
TCHAR szTelNum[32];
}CONTACTSTRUCT;
要使用SIM的相关文件,需要包含头文件 simmgr.h
首先要初始化一下
HSIM lphSim;
HRESULT hr = SimInitialize(0, NULL, 0, &lphSim);
if(FAILED(hr))
{
return;
}
其次获取总共使用的多少条记录与总共可以容纳的记录条数
DWORD dwUsed,dwTotal;
hr = SimGetPhonebookStatus(lphSim, SIM_PBSTORAGE_SIM, &dwUsed, &dwTotal);
然后我们读取联系人的信息
定义一个
std::vector<CONTACTSTRUCT> vContact;
for(int i=0; i<dwTotal; i++)
{
//对结构初始话以下
SIMPHONEBOOKENTRY phoneent;
memset(&phoneent,0,sizeof(phoneent));
phoneent.cbSize = sizeof(phoneent);
if (SUCCEEDED(SimReadPhonebookEntry(lphSim, SIM_PBSTORAGE_SIM, i+1, &phoneent)))
{
CONTACTSTRUCT tempContact = {0};
wcsncpy(tempContact.szName, phoneent.lpszText, 31); // 姓名
wcsncpy(tempContact.szTelNum, phoneent.lpszAddress, 31); // 电话
vContact.push_back(tempContact );
}
}
//最后别忘了清理
SimDeinitialize(lphSim);
lphSim = NULL;
这里读取的时候用了dwTotal,是因为听有经验的人说,sim卡的存储可能不连续,如果用dwUsed的话,可能会有问题。
积累一下,有时间再好好看一下outlook联系人的。
参考文章:
Pocket 中获取SIM卡中联系人信息
http://blog.csdn.net/xulg1984/archive/2008/05/30/2497712.aspx
posted on 2009-04-09 15:20
Sandy 阅读(3047)
评论(0) 编辑 收藏 引用 所属分类:
windows学习