软件获取imei和imsi_获取手机的IMEI与IMSI
一.原理
使用了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相关推荐
- Android 获取手机的IMEI
1.在AndroidManifest.xml中增加访问设备状态的权限: <uses-permission android:name="android.permission.READ_P ...
- java设备imei号_Android 获取imei号码,获取手机型号和系统版本号
在AndroidManifest.xml文件中要添加 才有权限 TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEP ...
- ios -获取手机唯一imei码
相信各位也知道,苹果无法获取imei.虽然不能直接获取imei,但可以创建类似imei用途的唯一key.imei 具有唯一性.如果不是拿imei去查询手机信息的话,就可以自己创建新的key代替imei ...
- Android 获取手机的 IMEI 值
手机在生产时,每部手机均有一个唯一的标识(ID),国际上采用国际移动设备身份码(IMEI, International Mobile Equipment Identity).IMEI是由15位数字组成 ...
- 如何查看手机的android版本号,android系统如何获取imei号码,获取手机型号和系统版本号...
核心代码: Imei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)) .getDeviceId(); 1.加入权限 在manife ...
- Android 获取imei号码,获取手机型号和系统版本号
在AndroidManifest.xml文件中要添加 <uses-permission android:name="android.permission.READ_PHONE_STAT ...
- Android中获取手机的IMEI
IMEI的概念 IMEI(International Mobile Equipment Identity): 是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号& ...
- Android 获取手机的 IMEI 值 (设备标识码)
权限 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> private voi ...
- 获取手机的IMEI与IMSI
一.原理 使用了Pocket PC SDK的EXTAPI 实现过程如下: 1.首先加如头文件: #include "tapi.h" #include "extapi.h& ...
最新文章
- 清华计算机学院新成立,清华AI更进一步:清华大学成立人工智能国际治理研究院...
- 《OpenStack实战》——第1章 介绍OpenStack 1.1OpenStack是什么
- 禁止PHP警告性错误
- java创建线程的两种方法区别
- 成功解决TypeError: __init__() got an unexpected keyword argument 'n_iterations'
- 雅虎与软银构和:拟出售雅虎日本35%股份
- kernel笔记——进程调度
- H5 微信公众号 授权登录 前后端分离篇(后端02)
- android api接口封装,android-apidesigner是一个网络接口封装工具
- 高16位低16位什么意思_为什么模拟量模块16位要比13位转换精度高,高多少?
- intelssd在linux固件升级,BUG不再难缠 教会您升级主流SSD固件
- 希捷ST31000528AS Disk Boot Failure, Insert System Disk and Press Enter和飞利浦的193ei显示器亮的问题
- Heading/Pitch/Roll与Omega/Phi/Kappa简单介绍
- 信息融合发展沿革与技术动态
- 百度AI——人脸识别案例
- 【笔记】《Python数据分析与实战挖掘》
- Css的字体样式属性大全
- Muu云课堂V2 v2.2.4
- 程序员必备狂拽炫酷吊炸天的动效神器
- 安装zabbix及部署
热门文章
- webmagic+selenium模拟浏览器下载动态网页
- TensorFlow函数总览
- #Reading Paper# Profiling the Design Space for Graph Neural Networks based Collaborative Filtering
- 这群猪,QQ群一共就15人,14个管理员,然后我被禁言了
- 120941138报:工信部正搭建移动应用认证和管理服务
- 河北大学计算机专业调剂,河北大学考研接收调剂信息
- 有哪些质量比较高的产品原型素材网站?
- 微型计算机系统中微处理器又称为什么,微处理器又称为什么
- 统计复用系统为什么避免不了排队
- 模型5.4——对数据进行正态分布检验