一.原理

使用了Pocket PC SDK的EXTAPI

实现过程如下:

1.首先加如头文件:

#include "tapi.h"

#include "extapi.h"

#define TAPI_API_HIGH_VERSION   0x00020000

#define EXT_API_LOW_VERSION     0x00010000

#define EXT_API_HIGH_VERSION    0x00010000

2.引入库文件cellcore.lib

3.输入代码即可:

BOOL GetDeviceSIMInfo(CString &strIMEI,CString &strIMSI)

{

BOOL bSus = FALSE;                  //返回结果是否正确

TCHAR szIMEI[MAX_PATH];             //保存设备的IMEI

TCHAR szIMSI[MAX_PATH];             //保存设备的IMSI

//初始化数组

memset(szIMEI,0,sizeof(strIMEI));

memset(szIMSI,0,sizeof(szIMSI));

LINEGENERALINFO *lineGeneralInfo;   //保存设备序列号的信息的结构体

HLINEAPP hLineApp = 0;

HLINE hLine = 0;

DWORD dwNumDevs;

DWORD dwAPIVersion = TAPI_API_HIGH_VERSION;

DWORD dwExtVersion = 0;

DWORD dwDeviceID;

DWORD dwMediaMode = LINEMEDIAMODE_DATAMODEM | LINEMEDIAMODE_INTERACTIVEVOICE;

LONG tapiresult;

DWORD temp;

LINEINITIALIZEEXPARAMS lineInitializeExParams;

lineGeneralInfo = (LINEGENERALINFO*)malloc(1024);

lineGeneralInfo->dwTotalSize = sizeof(LINEGENERALINFO);

lineInitializeExParams.dwTotalSize = sizeof(lineInitializeExParams);

lineInitializeExParams.dwOptions =  LINEINITIALIZEEXOPTION_USEEVENT; //The application desires to use the Event Handle event notification mechanism

tapiresult = lineInitializeEx(&hLineApp, 0, 0,L"SimTry", &dwNumDevs, &dwAPIVersion,&lineInitializeExParams); //returns 0 (SUCCESS)

lineGeneralInfo = (LINEGENERALINFO*)malloc(sizeof(LINEGENERALINFO));

lineGeneralInfo->dwTotalSize = sizeof(LINEGENERALINFO);

for (dwDeviceID = 0; dwDeviceID < dwNumDevs;dwDeviceID++)

{

tapiresult = lineNegotiateExtVersion(hLineApp, dwDeviceID, dwAPIVersion, EXT_API_LOW_VERSION,

EXT_API_HIGH_VERSION, &dwExtVersion);               //returns 0 (SUCCESS)

tapiresult = lineOpen(hLineApp, dwDeviceID,&hLine, dwAPIVersion, 0, 0,

LINECALLPRIVILEGE_OWNER, dwMediaMode, 0);           //returns 0 (SUCCESS)

tapiresult = lineGetGeneralInfo(hLine, lineGeneralInfo); //returns 0 (SUCCESS)

if((tapiresult == 0) && (lineGeneralInfo->dwNeededSize > lineGeneralInfo->dwTotalSize))

{

//重新获取最新的值

temp = lineGeneralInfo->dwNeededSize;

free(lineGeneralInfo);

lineGeneralInfo = (LINEGENERALINFO*)malloc(temp);

lineGeneralInfo->dwTotalSize = temp;

tapiresult = lineGetGeneralInfo(hLine, lineGeneralInfo);

//已将结果拿到

//IMEI

lstrcpy(szIMEI, (TCHAR*)((char*)lineGeneralInfo

+ lineGeneralInfo->dwSerialNumberOffset));

//IMSI

if(lineGeneralInfo->dwSubscriberNumberSize > 2)

{

for(int j=0;jdwSubscriberNumberSize/2;j++)

szIMSI[j] = *((unsigned short *)(lineGeneralInfo) + j + lineGeneralInfo->dwSubscriberNumberOffset/2);

}

bSus = TRUE;

break;

}

}

if(bSus)

{

strIMEI = CString(szIMEI);

strIMSI = CString(szIMSI);

}

//回收资源

free(lineGeneralInfo);

if(hLine)

lineClose(hLine);

if(hLineApp)

lineShutdown(hLineApp);

return bSus;

}

软件获取imei和imsi_获取手机的IMEI与IMSI相关推荐

  1. Android 获取手机的IMEI

    1.在AndroidManifest.xml中增加访问设备状态的权限: <uses-permission android:name="android.permission.READ_P ...

  2. java设备imei号_Android 获取imei号码,获取手机型号和系统版本号

    在AndroidManifest.xml文件中要添加 才有权限 TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEP ...

  3. ios -获取手机唯一imei码

    相信各位也知道,苹果无法获取imei.虽然不能直接获取imei,但可以创建类似imei用途的唯一key.imei 具有唯一性.如果不是拿imei去查询手机信息的话,就可以自己创建新的key代替imei ...

  4. Android 获取手机的 IMEI 值

    手机在生产时,每部手机均有一个唯一的标识(ID),国际上采用国际移动设备身份码(IMEI, International Mobile Equipment Identity).IMEI是由15位数字组成 ...

  5. 如何查看手机的android版本号,android系统如何获取imei号码,获取手机型号和系统版本号...

    核心代码: Imei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)) .getDeviceId(); 1.加入权限 在manife ...

  6. Android 获取imei号码,获取手机型号和系统版本号

    在AndroidManifest.xml文件中要添加 <uses-permission android:name="android.permission.READ_PHONE_STAT ...

  7. Android中获取手机的IMEI

    IMEI的概念 IMEI(International Mobile Equipment Identity): 是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号& ...

  8. Android 获取手机的 IMEI 值 (设备标识码)

    权限 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> private voi ...

  9. 获取手机的IMEI与IMSI

    一.原理 使用了Pocket PC SDK的EXTAPI 实现过程如下: 1.首先加如头文件: #include "tapi.h" #include "extapi.h& ...

最新文章

  1. 清华计算机学院新成立,清华AI更进一步:清华大学成立人工智能国际治理研究院...
  2. 《OpenStack实战》——第1章 介绍OpenStack 1.1OpenStack是什么
  3. 禁止PHP警告性错误
  4. java创建线程的两种方法区别
  5. 成功解决TypeError: __init__() got an unexpected keyword argument 'n_iterations'
  6. 雅虎与软银构和:拟出售雅虎日本35%股份
  7. kernel笔记——进程调度
  8. H5 微信公众号 授权登录 前后端分离篇(后端02)
  9. android api接口封装,android-apidesigner是一个网络接口封装工具
  10. 高16位低16位什么意思_为什么模拟量模块16位要比13位转换精度高,高多少?
  11. intelssd在linux固件升级,BUG不再难缠 教会您升级主流SSD固件
  12. 希捷ST31000528AS Disk Boot Failure, Insert System Disk and Press Enter和飞利浦的193ei显示器亮的问题
  13. Heading/Pitch/Roll与Omega/Phi/Kappa简单介绍
  14. 信息融合发展沿革与技术动态
  15. 百度AI——人脸识别案例
  16. 【笔记】《Python数据分析与实战挖掘》
  17. Css的字体样式属性大全
  18. Muu云课堂V2 v2.2.4
  19. 程序员必备狂拽炫酷吊炸天的动效神器
  20. 安装zabbix及部署

热门文章

  1. webmagic+selenium模拟浏览器下载动态网页
  2. TensorFlow函数总览
  3. #Reading Paper# Profiling the Design Space for Graph Neural Networks based Collaborative Filtering
  4. 这群猪,QQ群一共就15人,14个管理员,然后我被禁言了
  5. 120941138报:工信部正搭建移动应用认证和管理服务
  6. 河北大学计算机专业调剂,河北大学考研接收调剂信息
  7. 有哪些质量比较高的产品原型素材网站?
  8. 微型计算机系统中微处理器又称为什么,微处理器又称为什么
  9. 统计复用系统为什么避免不了排队
  10. 模型5.4——对数据进行正态分布检验