织梦CMS - 轻松建站从此开始!

罗索

WM获取手机号码

落鹤生 发布于 2010-06-25 17:55 点击:次 
一段在Windows Mobile下截取手机号码的代码。
TAG:

  1. #define CAPS_BUFFER_SIZE    512 
  2.  
  3. #define MAX_LOADSTRING 25 
  4.  
  5. TCHAR szNumber[MAX_LOADSTRING]; 
  6. HRESULT SHGetPhoneNumber(LPTSTR szNumber, UINT cchNumber, UINT nLineNumber); 
  7.  
  8. SHGetPhoneNumber(szNumber, MAX_LOADSTRING, 1);//getting phone number of line 1 
  9.     MessageBox(NULL, szNumber, TEXT("Phone Number"), MB_OK); //显示号码 
  10. HRESULT SHGetPhoneNumber(LPTSTR szNumber, UINT cchNumber, UINT nLineNumber) 
  11.     HRESULT hr = E_FAIL; 
  12.     LRESULT lResult = 0; 
  13.     HLINEAPP hLineApp; 
  14.     DWORD    dwNumDevs; //number of line devices 
  15.     DWORD    dwAPIVersion = TAPI_API_HIGH_VERSION; 
  16.     LINEINITIALIZEEXPARAMS liep; 
  17.  
  18.     DWORD dwTAPILineDeviceID; 
  19.     const DWORD dwAddressID = nLineNumber - 1; 
  20.  
  21.     liep.dwTotalSize = sizeof(liep); 
  22.     liep.dwOptions   = LINEINITIALIZEEXOPTION_USEEVENT; 
  23.  
  24.     //initialize line before accessing 
  25.     if (SUCCEEDED(lineInitializeEx(&hLineApp, 0, 0,
  26.  TEXT("ExTapi_Lib"), &dwNumDevs, &dwAPIVersion, &liep))) 
  27.     { 
  28.  
  29.         BYTE* pCapBuf = NULL; 
  30.         DWORD dwCapBufSize = CAPS_BUFFER_SIZE; 
  31.         LINEEXTENSIONID LineExtensionID; 
  32.         LINEDEVCAPS*     pLineDevCaps = NULL; 
  33.         LINEADDRESSCAPS* placAddressCaps = NULL; 
  34.  
  35.         pCapBuf = new BYTE[dwCapBufSize]; 
  36.         EXIT_ON_NULL(pCapBuf); 
  37.  
  38.         pLineDevCaps = (LINEDEVCAPS*)pCapBuf; 
  39.         pLineDevCaps->dwTotalSize = dwCapBufSize; 
  40.  
  41.         // Get TSP Line Device ID 
  42.         dwTAPILineDeviceID = 0xffffffff; 
  43.         for (DWORD dwCurrentDevID = 0 ; dwCurrentDevID < dwNumDevs ;
  44.  dwCurrentDevID++) 
  45.         { 
  46. //ensure TAPI, service provider, and application are all using the same versions 
  47.             if (0 == lineNegotiateAPIVersion(hLineApp, dwCurrentDevID,
  48.  TAPI_API_LOW_VERSION, TAPI_API_HIGH_VERSION, &dwAPIVersion, &LineExtensionID)) 
  49.             {
  50.                 lResult = lineGetDevCaps(hLineApp, dwCurrentDevID,
  51.  dwAPIVersion, 0, pLineDevCaps); 
  52.  
  53.  //increase buffer size if too small to hold the device capabilities 
  54.                 if (dwCapBufSize < pLineDevCaps->dwNeededSize) 
  55.                 {
  56.                     delete[] pCapBuf;
  57.                     dwCapBufSize = pLineDevCaps->dwNeededSize;
  58.                     pCapBuf = new BYTE[dwCapBufSize];
  59.                     EXIT_ON_NULL(pCapBuf);
  60.  
  61.                     pLineDevCaps = (LINEDEVCAPS*)pCapBuf; 
  62.                     pLineDevCaps->dwTotalSize = dwCapBufSize; 
  63.  
  64.                     lResult = lineGetDevCaps(hLineApp, dwCurrentDevID,
  65.  dwAPIVersion, 0, pLineDevCaps); 
  66.                 } 
  67. //lResult of 0 means the device capabilities were successfully returned 
  68.                 if ((0 == lResult) && 
  69.                     (0 == _tcscmp((TCHAR*)((BYTE*)pLineDevCaps+pLineDevCaps->
  70. dwLineNameOffset), CELLTSP_LINENAME_STRING))) 
  71.                 { 
  72.                     dwTAPILineDeviceID = dwCurrentDevID; 
  73.                     break
  74.                 } 
  75.             } 
  76.         } 
  77.  
  78.         placAddressCaps = (LINEADDRESSCAPS*)pCapBuf; 
  79.         placAddressCaps->dwTotalSize = dwCapBufSize; 
  80.  
  81.         lResult = lineGetAddressCaps(hLineApp, dwTAPILineDeviceID, dwAddressID,
  82.  dwAPIVersion, 0, placAddressCaps); 
  83.  
  84. //increase buffer size if too small to hold the address capabilities 
  85.         if (dwCapBufSize < placAddressCaps->dwNeededSize) 
  86.         { 
  87.             delete[] pCapBuf; 
  88.             dwCapBufSize = placAddressCaps->dwNeededSize; 
  89.             pCapBuf = new BYTE[dwCapBufSize]; 
  90.             EXIT_ON_NULL(pCapBuf); 
  91.  
  92.             placAddressCaps = (LINEADDRESSCAPS*)pCapBuf; 
  93.             placAddressCaps->dwTotalSize = dwCapBufSize; 
  94.  
  95.             lResult = lineGetAddressCaps(hLineApp, dwTAPILineDeviceID, dwAddressID,
  96.  dwAPIVersion, 0, placAddressCaps); 
  97.         } 
  98. //lResult of 0 means the address capabilities were successfully returned 
  99.         if (0 == lResult) 
  100.         { 
  101.             if (szNumber) 
  102.             { 
  103.                 szNumber[0] = TEXT('\0'); 
  104.                 EXIT_ON_FALSE(0 != placAddressCaps->dwAddressSize);
  105. // A non-zero dwAddressSize means a phone number was found 
  106.                 ASSERT(0 != placAddressCaps->dwAddressOffset); 
  107.                 PWCHAR tsAddress = (WCHAR*)(((BYTE*)placAddressCaps)
  108. +placAddressCaps->dwAddressOffset);
  109.                 StringCchCopy(szNumber, cchNumber, tsAddress); 
  110.             } 
  111.  
  112.             hr = S_OK; 
  113.         } 
  114.  
  115.         delete[] pCapBuf; 
  116.     } // End if () 
  117.  
  118. FuncExit: 
  119.     lineShutdown(hLineApp); 
  120.  
  121.     return hr; 

 

(myyb)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201006/9729.html]
本文出处:百度博客 作者:myyb
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容