函数功能:读取sim联系人列表
SIMPHONEBOOKENTRY ContactOutBuf;
SIMCAPS simcaps;
BOOL bOpenSim = false;
DWORD dwRecNum = 0;
DWORD dwCurRec = 0;
DWORD dwLocation = 0;
HSIM hSim;
memset( &simcaps, 0,sizeof( &simcaps ));
memset( &ContactOutBuf, 0,sizeof( &ContactOutBuf ));
wstring wstrSimContact;
HRESULT hRes = SimInitialize( 0, 0, 0,&hSim );
if ( FAILED(hRes) )
{
//ErrorHandle( hRes);//错误类型鉴定
goto END;
}
hRes = SimGetDevCaps( hSim, SIM_CAPSTYPE_PBINDEXRANGE,&simcaps);
if ( FAILED( hRes))
{
goto END;
}
dwRecNum = simcaps.dwMaxPBIndex - simcaps.dwMinPBIndex+1;
dwCurRec = simcaps.dwMinPBIndex;
TCHAR tchBuf[5] = { 0 };
while( dwCurRec <= dwRecNum )
{
hRes = SimReadPhonebookEntry( hSim, SIM_PBSTORAGE_SIM, dwCurRec, &ContactOutBuf);
if( hRes == S_OK)//If the index is unused
{
wstrSimContact += ContactOutBuf.lpszText;
wstrSimContact += L",";
wstrSimContact += ContactOutBuf.lpszAddress;
wstrSimContact += L",";
wstrSimContact += _ltow( dwCurRec, tchBuf, 10 );
wstrSimContact += L"|";
dwCurRec++;
memset( &ContactOutBuf, 0,sizeof( &ContactOutBuf ));
memset( tchBuf, 0, sizeof( tchBuf));
}
else//联系人已经读完 跳出循环
{
break;
}
}
* 功 能 描 述: -修改指定索引的联系人信息
DWORD iIndex = 0;
TCHAR tchIndex[5] = { 0 };
TCHAR tchName[21] = { 0 };
TCHAR tchNum[17] = { 0 };
iIndex = _wtol( tchIndex);
if ( iIndex < 1)
{
return -1;
}
SIMCAPS simcaps ;
BOOL bOpenSim = false;
DWORD dwRecNum = 0;
DWORD dwCurRec = 0;
DWORD dwLocation = 0;
HRESULT hRet = 0;
HSIM hSim;
memset( &simcaps, 0, sizeof( &simcaps));
hRet = SimInitialize( 0, 0, 0,&hSim );
if ( FAILED(hRet) )
{
//ErrorHandle( hRes);//错误类型鉴定
goto END;
}
SIMPHONEBOOKENTRY ContactOutBuf;
memset( &simcaps, 0,sizeof( &simcaps ));
memset( &ContactOutBuf, 0,sizeof( &ContactOutBuf ));
ContactOutBuf.cbSize = sizeof(SIMPHONEBOOKENTRY);
ContactOutBuf.dwParams = SIM_PARAM_PBE_ALL;
ContactOutBuf.dwAddressType = SIM_ADDRTYPE_INTERNATIONAL;
ContactOutBuf.dwNumPlan = SIM_NUMPLAN_TELEPHONE;
wcscpy( ContactOutBuf.lpszText, tchName);
wcscpy( ContactOutBuf.lpszAddress, tchNum);
//取得访问sim能力
hRet = SimGetDevCaps( hSim, SIM_CAPSTYPE_PBINDEXRANGE,&simcaps);
if ( FAILED( hRet))
{
return -3;
}
dwRecNum = simcaps.dwMaxPBIndex - simcaps.dwMinPBIndex+1;
dwCurRec = simcaps.dwMinPBIndex;
if ( iIndex > dwRecNum)
{
return -4;
}
hRet = SimWritePhonebookEntry ( hSim, SIM_PBSTORAGE_SIM, iIndex , &ContactOutBuf) ;
END:
SimDeinitialize( hSim);
功 能 描 述: -增加sim卡联系人
int iIndex = 0;
TCHAR tchName[21] = { 0 };
TCHAR tchNum[17] = { 0 };
SIMCAPS simcaps ;
BOOL bOpenSim = false;
DWORD dwRecNum = 0;
DWORD dwCurRec = 0;
DWORD dwLocation = 0;
HRESULT hRet = 0;
HSIM hSim;
memset( &simcaps, 0, sizeof( &simcaps));
hRet = SimInitialize( 0, 0, 0,&hSim );
if ( FAILED(hRet) )
{
//ErrorHandle( hRes);//错误类型鉴定
goto END;
}
SIMPHONEBOOKENTRY ContactOutBuf;
memset( &simcaps, 0,sizeof( &simcaps ));
memset( &ContactOutBuf, 0,sizeof( &ContactOutBuf ));
ContactOutBuf.cbSize = sizeof(SIMPHONEBOOKENTRY);
ContactOutBuf.dwParams = SIM_PARAM_PBE_ALL;
ContactOutBuf.dwAddressType = SIM_ADDRTYPE_INTERNATIONAL;
ContactOutBuf.dwNumPlan = SIM_NUMPLAN_TELEPHONE;
wcscpy( ContactOutBuf.lpszText, tchName);
wcscpy( ContactOutBuf.lpszAddress, tchNum);
//取得访问sim能力
hRet = SimGetDevCaps( hSim, SIM_CAPSTYPE_PBINDEXRANGE,&simcaps);
if ( FAILED( hRet))
{
return -3;
}
SIMPHONEBOOKENTRY ContactInBuf;
memset( &ContactInBuf, 0, sizeof( &ContactInBuf));
dwRecNum = simcaps.dwMaxPBIndex - simcaps.dwMinPBIndex+1;
dwCurRec = simcaps.dwMinPBIndex;
while( dwCurRec <= dwRecNum ) //往后写
{
hRet = SimReadPhonebookEntry(hSim, dwLocation, dwCurRec, &ContactInBuf);
if( FAILED( hRet))//该位置没有被使用
{
SimWritePhonebookEntry ( hSim, SIM_PBSTORAGE_SIM, iIndex , &ContactOutBuf) ;
}
else
{
dwCurRec++;
}
}
END:
SimDeinitialize( hSim);
功 能 描 述: -删除指定索引sim卡联系人
DWORD iIndex = 0;
SIMCAPS simcaps ;
BOOL bOpenSim = false;
DWORD dwRecNum = 0;
DWORD dwCurRec = 0;
DWORD dwLocation = 0;
HRESULT hRet = 0;
HSIM hSim;
memset( &simcaps, 0, sizeof( &simcaps));
hRet = SimInitialize( 0, 0, 0,&hSim );
if ( FAILED(hRet) )
{
//ErrorHandle( hRes);//错误类型鉴定
goto END;
}
//取得访问sim能力
hRet = SimGetDevCaps( hSim, SIM_CAPSTYPE_PBINDEXRANGE,&simcaps);
if ( FAILED( hRet))
{
return -3;
}
SIMPHONEBOOKENTRY ContactInBuf;
memset( &ContactInBuf, 0, sizeof( &ContactInBuf));
dwRecNum = simcaps.dwMaxPBIndex - simcaps.dwMinPBIndex+1;
if ( iIndex > dwRecNum || iIndex < 1)
{
hRet = -2;
goto END;
}
hRet = SimDeletePhonebookEntry( hSim,SIM_PBSTORAGE_SIM,iIndex );
END:
SimDeinitialize( hSim);
功 能 描 述: -删除整个sim卡联系人
SIMCAPS simcaps;
DWORD dwRecNum = 0;
DWORD dwCurRec = 0;
DWORD dwLocation = 0;
HSIM hSim;
memset( &simcaps, 0, sizeof( &simcaps));
HRESULT hRet = SimInitialize( 0, 0, 0,&hSim );
if ( FAILED(hRet) )
{
//ErrorHandle( hRes);//错误类型鉴定
goto END;
}
//取得访问sim能力
hRet = SimGetDevCaps( hSim, SIM_CAPSTYPE_PBINDEXRANGE,&simcaps);
if ( FAILED( hRet))
{
goto END;
}
dwRecNum = simcaps.dwMaxPBIndex - simcaps.dwMinPBIndex + 1;
dwCurRec = simcaps.dwMinPBIndex;
while( dwCurRec <= dwRecNum ) //逐条删除
{
SimDeletePhonebookEntry( hSim,SIM_PBSTORAGE_SIM,dwCurRec);
dwCurRec++;
}
END:
SimDeinitialize( hSim);
函数功能:读取保存在sim卡中短信
DWORD dwUsed = 0;
DWORD dwTotal = 0;
HRESULT hResult = 0;
LPSIMMESSAGE lpSimMessage = NULL;
HSIM hSim;
HRESULT hRet = SimInitialize( 0, 0, 0,&hSim );
wstring wstrSms;
if ( FAILED(hRet) )
{
//ErrorHandle( hRes);//错误类型鉴定
goto END;
}
/*dwStorage = SIM_SMSSTORAGE_SIM;
else
{
dwStorage = SIM_SMSSTORAGE_BROADCAST;
}*/
hResult = SimGetSmsStorageStatus( hSim, SIM_SMSSTORAGE_SIM, &dwUsed, &dwTotal);
if ( S_OK != hResult)
{
return hResult;
}
for( DWORD iIndex = 1;iIndex <= dwTotal; iIndex ++)
{
hResult = SimReadMessage( hSim, SIM_SMSSTORAGE_SIM, iIndex, lpSimMessage);
if( hResult != S_OK)
{
//ErrorHandle( hResult);
break;
}
}
END:
SimDeinitialize( hSim);
功 能 描 述: -删除sim卡短信
HRESULT hResult = 0;
DWORD dwIndex = 0
HSIM hSim;
hResult = SimInitialize( 0, 0, 0,&hSim );
if ( FAILED( hResult))
{
return -2;
}
hResult = SimDeleteMessage( hSim,SIM_SMSSTORAGE_SIM, dwIndex );
if ( FAILED( hResult))//失败,再删除其他的可能位置
{
hResult = SimDeleteMessage( hSim,SIM_SMSSTORAGE_BROADCAST, dwIndex );
if ( FAILED( hResult))
{
hResult = SimDeleteMessage( hSim,SIM_NUMSMSSTORAGES, dwIndex );
}
}
SimDeinitialize( hSim);