Windows Mobile上聯(lián)系人的信息可分別存儲在手機(jī)和SIM卡中。我嘗試過從手機(jī),即所謂的Outlook聯(lián)系人中讀取聯(lián)系人的信息,但是還沒有嘗試過從sim卡中讀取聯(lián)系人的信息,心里也一直默認(rèn)為難吧。今天查了一下,發(fā)現(xiàn)竟然這么簡單,相比outlook的讀取方式來說,簡單很多。
我們先來定義個結(jié)構(gòu)
typedef struct {
TCHAR szName[32];
TCHAR szTelNum[32];
}CONTACTSTRUCT;
要使用SIM的相關(guān)文件,需要包含頭文件 simmgr.h
首先要初始化一下
HSIM lphSim;
HRESULT hr = SimInitialize(0, NULL, 0, &lphSim);
if(FAILED(hr))
{
return;
}
其次獲取總共使用的多少條記錄與總共可以容納的記錄條數(shù)
DWORD dwUsed,dwTotal;
hr = SimGetPhonebookStatus(lphSim, SIM_PBSTORAGE_SIM, &dwUsed, &dwTotal);
然后我們讀取聯(lián)系人的信息
定義一個
std::vector<CONTACTSTRUCT> vContact;
for(int i=0; i<dwTotal; i++)
{
//對結(jié)構(gòu)初始話以下
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,是因為聽有經(jīng)驗的人說,sim卡的存儲可能不連續(xù),如果用dwUsed的話,可能會有問題。
積累一下,有時間再好好看一下outlook聯(lián)系人的。
參考文章:
Pocket 中獲取SIM卡中聯(lián)系人信息
http://blog.csdn.net/xulg1984/archive/2008/05/30/2497712.aspx
posted on 2009-04-09 15:20
Sandy 閱讀(3079)
評論(0) 編輯 收藏 引用 所屬分類:
windows學(xué)習(xí)