在WM下获得运营商的名称需要用TAPI,找了个例子给大家SHARE一下
//在CRegInfoDlg类中定义成员变量
HLINEAPP m_hLineApp;
HLINE m_hLine;
TCHAR m_tchOpertionNum[MAX_PATH];
//函数实现
BOOLCRegInfoDlg::GetCurrentOperator(TCHAR* szCurrentOperator,TCHAR* szCurrentOperatorNumName)
{
LINEOPERATOR CurrentOperator;
if ( lineGetCurrentOperator( m_hLine, &CurrentOperator ) )
{
return FALSE;
}
_tcscpy( szCurrentOperator, CurrentOperator.lpszLongName );
_tcscpy( szCurrentOperatorNumName, CurrentOperator.lpszNumName );
return TRUE;
}
void CALLBACK TAPIProc( DWORD hDevice, DWORD dwMessage, DWORD dwInstance,
DWORD dwParam1, DWORD dwParam2, DWORD dwParam3 )
{
}
BOOL CRegInfoDlg::InitExTAPI()
{
DWORD dwNumDevs;
DWORD dwAPIVersion = TAPI_API_HIGH_VERSION;
LINEINITIALIZEEXPARAMS liep;
DWORD dwExtVersion;
// set the line init params
liep.dwTotalSize = sizeof(liep);
liep.dwOptions = LINEINITIALIZEEXOPTION_USEHIDDENWINDOW;
if (lineInitializeEx( &m_hLineApp, _Module.GetModuleInstance( ), &TAPIProc, TEXT("EXTAPISAMPLE"),
&dwNumDevs, &dwAPIVersion, &liep)) {
return FALSE;
}//这个比较主要INIT
// get the device ID
DWORD dwTAPILineDeviceID = GetTSPLineDeviceID(m_hLineApp, dwNumDevs,
TAPI_API_LOW_VERSION,
TAPI_API_HIGH_VERSION,
(L"Cellular Line"));
// error getting the line device ID?
if (0xffffffff == dwTAPILineDeviceID) {
lineShutdown(m_hLineApp);
return FALSE;
}
// now try and open the line
const DWORD dwMediaMode = LINEMEDIAMODE_DATAMODEM | LINEMEDIAMODE_INTERACTIVEVOICE;
if(lineOpen(m_hLineApp, dwTAPILineDeviceID,
&m_hLine, dwAPIVersion, 0, 0,
LINECALLPRIVILEGE_OWNER, dwMediaMode, 0)) {
lineShutdown(m_hLineApp);
return FALSE;
}
// set up ExTAPI
if (lineNegotiateExtVersion(m_hLineApp, dwTAPILineDeviceID,
dwAPIVersion, EXT_API_LOW_VERSION,
EXT_API_HIGH_VERSION, &dwExtVersion)) {
lineClose(m_hLine);
lineShutdown(m_hLineApp);
return FALSE;
}
TCHAR tNowOpertion[MAX_PATH]={0};
SecureZeroMemory( m_tchOpertionNum, ( MAX_PATH * sizeof( TCHAR ) ) );
GetCurrentOperator( tNowOpertion, m_tchOpertionNum );//这句最终得到结果
return TRUE;
}
DWORD CRegInfoDlg::GetTSPLineDeviceID( const HLINEAPP hLineApp,
const DWORD dwNumberDevices, const DWORD dwAPIVersionLow,
const DWORD dwAPIVersionHigh, const TCHAR* const psTSPLineName )
{
DWORD dwReturn = 0xffffffff;
for( DWORD dwCurrentDevID = 0 ; dwCurrentDevID < dwNumberDevices ; dwCurrentDevID++ )
{
DWORD dwAPIVersion;
LINEEXTENSIONID LineExtensionID;
if(0 == lineNegotiateAPIVersion(hLineApp, dwCurrentDevID,
dwAPIVersionLow, dwAPIVersionHigh,
&dwAPIVersion, &LineExtensionID)) {
LINEDEVCAPS LineDevCaps;
LineDevCaps.dwTotalSize = sizeof(LineDevCaps);
if(0 == lineGetDevCaps(hLineApp, dwCurrentDevID,
dwAPIVersion, 0, &LineDevCaps)) {
BYTE* pLineDevCapsBytes = new BYTE[LineDevCaps.dwNeededSize];
if(0 != pLineDevCapsBytes) {
LINEDEVCAPS* pLineDevCaps = (LINEDEVCAPS*)pLineDevCapsBytes;
pLineDevCaps->dwTotalSize = LineDevCaps.dwNeededSize;
if(0 == lineGetDevCaps(hLineApp, dwCurrentDevID,
dwAPIVersion, 0, pLineDevCaps)) {
if(0 == _tcscmp((TCHAR*)((BYTE*)pLineDevCaps+pLineDevCaps->dwLineNameOffset), psTSPLineName)) {
dwReturn = dwCurrentDevID;
}
}
delete[]pLineDevCapsBytes;
}
}
}
}
return dwReturn;
}
分享到:
相关推荐
获取windows mobile硬件IMEI的方法.
通过分析web站点页面,匹配当地的天气数据,可设置定时获取等。
windows mobile获取手机进程的demo
WindowsMobile5 源码WindowsMobile5 源码WindowsMobile5 源码WindowsMobile5 源码
如何搭建windows mobile应用开发的环境
Windows Mobile开发实验,wince操作系统定制。
IMSI国际移动用户识别码(IMSI) international mobile subscriber identity 国际上为唯一识别一个移动用户所分配的号码。...在同一个国家内,如果有多个CDMA运营商,可以通过MNC来进行区别. IMEI 国际移动装备辨识码
Windows Mobile 经典源码 学习Windows Mobile 的不二选择
Windows Mobile开发Windows Mobile开发Windows Mobile开发Windows Mobile开发
Windows Mobile for HP iPAQ 114
windows mobile 平台下的My mobile软件。
获取 Windows Mobile 设备的唯一标识.docx获取 Windows Mobile 设备的唯一标识.docx
Windows mobile 6.5常用软件
QR条形码的开发程序,能够在windows mobile 6中实现QR条形码的开发程序,能够在windows mobile 6中实现,eMbedded Visual C++和VS两种源代码
windows mobile 6.0 基于WebService方式与PC Server通讯的demo
一个简单的WindowsMobile获取SIM联系人列表和发送短信的示例 学习一下。
windows mobile 获取 GPS数据
Windows Mobile应用程序开发介绍 .Windows Mobile平台 .Windows Mobile开发环境搭建 .Windows Mobile开发技术和资源 .Demo
windows mobile直连版
WINDOWS MOBILE滑屏解锁