打开SMS和E-mail,自身号码

下面的方法可以有区别的打开SMS和E-mail(Outlook email)

TCHAR szAppName[MAX_PATH];
TCHAR   commandLine[MAX_PATH];

lstrcpy(szAppName, _T("tmail.exe");

若带开SMS(短信)
lstrcpy(commandLine, _T("-service /"SMS/""));
若带开E-mail(邮件)
lstrcpy(commandLine, _T("-service /"ActiveSync/""));


PROCESS_INFORMATION pi;

if (!::CreateProcess(szAppName, commandLine,    
       NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pi))
{
      return false;
}

WaitForSingleObject(pi.hProcess, INFINITE);

return true;

获取自身号码

 SMS_ADDRESS ad;
SmsGetPhoneNumber(&ad);
MessageBox(NULL, ad.ptsAddress, TEXT("Show the Own Phone Number"), 0);

 

 

TCHAR tcNum[256]={0};
SHGetPhoneNumber(tcNum,256,1);

HRESULT SHGetPhoneNumber(LPTSTR szNumber, UINT cchNumber, UINT nLineNumber)
{
     return SHReadLineAddressCaps(szNumber, cchNumber, NULL, nLineNumber);
}

 

HRESULT SHReadLineAddressCaps(LPTSTR szNumber, UINT cchNumber, PDWORD pdwCallFwdModes, UINT nLineNumber)
{

     HRESULT   hr = E_FAIL;
     LRESULT   lResult = 0;
     HLINEAPP hLineApp;
     DWORD     dwNumDevs;
     DWORD     dwAPIVersion = TAPI_API_HIGH_VERSION;
     LINEINITIALIZEEXPARAMS liep;

     DWORD dwTAPILineDeviceID;
     const DWORD dwAddressID = nLineNumber - 1;

     liep.dwTotalSize = sizeof(liep);
     liep.dwOptions    = LINEINITIALIZEEXOPTION_USEEVENT;

     if (SUCCEEDED(lineInitializeEx(&hLineApp, 0, 0, TEXT("ExTapi_Lib"), &dwNumDevs, &dwAPIVersion, &liep)))
     {

         BYTE* pCapBuf = NULL;
         DWORD dwCapBufSize = CAPS_BUFFER_SIZE;
         LINEEXTENSIONID   LineExtensionID;
         LINEDEVCAPS*      pLineDevCaps = NULL;
         LINEADDRESSCAPS* placAddressCaps = NULL;

         pCapBuf = new BYTE[dwCapBufSize];
         EXIT_ON_NULL(pCapBuf);

         pLineDevCaps = (LINEDEVCAPS*)pCapBuf;
         pLineDevCaps->dwTotalSize = dwCapBufSize;
  

         // Get TSP Line Device ID
         dwTAPILineDeviceID = 0xffffffff;
         for (DWORD dwCurrentDevID = 0 ; dwCurrentDevID < dwNumDevs ; dwCurrentDevID++)
         {
             if (0 == lineNegotiateAPIVersion(hLineApp, dwCurrentDevID, TAPI_API_LOW_VERSION, TAPI_API_HIGH_VERSION,&dwAPIVersion, &LineExtensionID))
             {
                 lResult = lineGetDevCaps(hLineApp, dwCurrentDevID, dwAPIVersion, 0, pLineDevCaps);

                 if (dwCapBufSize < pLineDevCaps->dwNeededSize)
                 {
                     delete[] pCapBuf;
                     dwCapBufSize = pLineDevCaps->dwNeededSize;
                     pCapBuf = new BYTE[dwCapBufSize];
                     EXIT_ON_NULL(pCapBuf);

                     pLineDevCaps = (LINEDEVCAPS*)pCapBuf;
                     pLineDevCaps->dwTotalSize = dwCapBufSize;

                     lResult = lineGetDevCaps(hLineApp, dwCurrentDevID, dwAPIVersion, 0, pLineDevCaps);
                 }
     TCHAR* aa = (TCHAR*)((BYTE*)pLineDevCaps+pLineDevCaps->dwLineNameOffset);
                 if ((0 == lResult) &&
                     (0 == _tcscmp(aa, CELLTSP_LINENAME_STRING)))
                 {
                     dwTAPILineDeviceID = dwCurrentDevID;
                     break;
                 }
             }
         }
  

  

   /*lResult= lineOpen(hLineApp, dwTAPILineDeviceID, g_hLine, 0x00020000, 0x00000000, 1,
LINECALLPRIVILEGE_OWNER|LINECALLPRIVILEGE_MONITOR, 0, NULL); */

   //
         placAddressCaps = (LINEADDRESSCAPS*)pCapBuf;
         placAddressCaps->dwTotalSize = dwCapBufSize;

         lResult = lineGetAddressCaps(hLineApp, dwTAPILineDeviceID, dwAddressID, dwAPIVersion, 0, placAddressCaps);
if (dwCapBufSize < placAddressCaps->dwNeededSize)
         {
             delete[] pCapBuf;
             dwCapBufSize = placAddressCaps->dwNeededSize;
             pCapBuf = new BYTE[dwCapBufSize];
             EXIT_ON_NULL(pCapBuf);

             placAddressCaps = (LINEADDRESSCAPS*)pCapBuf;
             placAddressCaps->dwTotalSize = dwCapBufSize;

             lResult = lineGetAddressCaps(hLineApp, dwTAPILineDeviceID, dwAddressID, dwAPIVersion, 0, placAddressCaps);
         }

         if (0 == lResult)
         {
             if (szNumber)
             {
                 szNumber[0] = _T('/0');

                 EXIT_ON_FALSE(0 != placAddressCaps->dwAddressSize);

                 // A non-zero dwAddressSize means a phone number was found
                 ASSERT(0 != placAddressCaps->dwAddressOffset);
                 PWCHAR tsAddress = (WCHAR*)(((BYTE*)placAddressCaps)+placAddressCaps->dwAddressOffset);

                 StringCchCopy(szNumber, cchNumber, tsAddress);
             }

             // Record the allowed forwarding modes
             if (pdwCallFwdModes)
             {
                 *pdwCallFwdModes = placAddressCaps->dwForwardModes;
             }

             hr = S_OK;
         }

         delete[] pCapBuf;
     } // End if ()

FuncExit:
     lineShutdown(hLineApp);

     return hr;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值