`
cjc
  • 浏览: 658390 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Windows mobile 下读取手机SIM卡信息

阅读更多
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
最近在忙一个移动警务的项目,需要获取SIM卡的信息,来做身份的验证。考虑到获取:国际移动设备识别码(IMEI:International Mobile Equipment Identification Number)和国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number),读取这两个号码用到TAPI的lineGetGeneralInfo()函。在新版的OpenNetCF里没有发现对这个函数的封装(也许我没找到),于是到网上找了找,找到一个以前版本OpenNetCF里的:TapiLib.dll,包含对Windows ce phoneapi 的封装(TAPI),综合网上的一些资料,实现代码如下:

public struct GeneralInfo
{
public string Manufacturer;
public string Model;
public string Revision;
public string SerialNumber;
public string SubscriberNumber;
}
/// <summary>
/// Tapi控制类
/// </summary>
public class ControlTapi
{
[DllImport("cellcore.dll")]
private static extern int lineGetGeneralInfo(IntPtr hLigne,byte[]lpLineGeneralInfo );
/// <summary>
/// 调用cellcore.dll获取sim卡的综合信息
/// </summary>
/// <param name="l"></param>
/// <returns></returns>
private GeneralInfo GetGeneralInfo(Line l)
{
GeneralInfo lgi = new GeneralInfo();
byte[] buffer = new byte[512];
BitConverter.GetBytes(512).CopyTo(buffer, 0);
if (lineGetGeneralInfo(l.hLine, buffer) != 0)
{
throw new System.ComponentModel.Win32Exception(System.Runtime.InteropServices.Marshal.GetLastWin32Error(), "TAPI Error: " + System.Runtime.InteropServices.Marshal.GetLastWin32Error().ToString("X"));
}
int subscsize = BitConverter.ToInt32(buffer, 44);
int subscoffset = BitConverter.ToInt32(buffer, 48);
lgi.SubscriberNumber = System.Text.Encoding.Unicode.GetString(buffer, subscoffset, subscsize).ToString();
lgi.SubscriberNumber = lgi.SubscriberNumber.Replace("\0", "");
return lgi;
}
/// <summary>
/// 获取sim卡的IMSI
/// </summary>
/// <returns></returns>
public static string GetIMSINumber()
{
string result = "";
try
{
Tapi t = new Tapi();
t.Initialize();
Line l = t.CreateLine(0, LINEMEDIAMODE.INTERACTIVEVOICE, OpenNETCF.Tapi.LINECALLPRIVILEGE.MONITOR);
ControlTapi ctapi = new ControlTapi();
GeneralInfo gi = ctapi.GetGeneralInfo(l);

result = gi.SubscriberNumber;
l.Dispose();
t.Shutdown();
}
catch// (Exception ex)
{
result = "";
}
return result;
}
/// <summary>
/// 获取IMEI的号码
/// </summary>
/// <returns></returns>
public static string GetIMEINumber()
{
string result = "";
try
{
Tapi t = new Tapi();
t.Initialize();
Line l = t.CreateLine(0, LINEMEDIAMODE.INTERACTIVEVOICE, OpenNETCF.Tapi.LINECALLPRIVILEGE.MONITOR);
ControlTapi ctapi = new ControlTapi();
GeneralInfo gi = ctapi.GetGeneralInfo(l);
result = gi.SerialNumber;
l.Dispose();
t.Shutdown();
}
catch// (Exception ex)
{
result = "";
}
return result;
}

}

vb 的代码你可以去看看这里:http://www.peterfoot.net/RetrieveIMEIThroughTAPI.aspx

另:
1、环境:在vs2005+windows mobile 5.0 +多普达818测试通过。
2、
关于获取SIM卡的本机号码,你可以用:http://www.microsoft.com/china/msdn/archives/library/dnnetcomp/html/netcfPhoneAPI.asp,这里 提供的方法,不过这个方法需要安全认证,比较麻烦,具体认证的方式见:http://www.microsoft.com/china/MSDN/library/Mobility/pocketpc/2k3smartphonesecurity.mspx?pf=true
3、TapiLib.dll的下载地址:http://www.cnblogs.com/Files/xjb/TapiLib.rar
4、参考资料:
http://hucgy.bokee.com/3328836.html
分享到:
评论

相关推荐

    Windows mobile 下读取手机SIM卡信息(转).rar

    Windows mobile 下读取手机SIM卡信息编程

    WWindows mobile 下读取手机SIM卡信息.doc

    WWindows mobile 下读取手机SIM卡信息

    C# Windows Mobile 读取SIM卡信息

    读取的SIM卡信息包括:IMEI、IMSI、ICCID 开发环境:VS 2008,CF2.0,Windows Mobile 5.0 SDK ICCID 信息不是十分准确只供参考。

    SIMDEMO获取windows mobile硬件IMEI的方法.

    获取windows mobile硬件IMEI的方法.

    Windows Mobile 获取【SIM卡电话簿】

    读取的PocketPc SIM卡中保存的电话簿。 开发环境:VS 2008,CF2.0,Windows Mobile 5.0 SDK 在 多普达D600 下测试,成功!

    《windows mobile 手机应用开发》源码

    贪吃蛇游戏 &lt;br&gt;第11章 SPNET:枚举网络标识连接和建立网络连接 HelloSMS:发送短信 SimPhoneBook:读取SIM卡电话簿条目 &lt;br&gt;第12章 Test_STLogFile_NoMFC:写LOG类库范例 &lt;br&gt;第13章 ...

    TapiLib.rar

    刚开始是读取SIM卡的本机号码,从http://www.microsoft.com/china/msdn/archives/library/dnnetcomp/html/netcfPhoneAPI.asp这篇从Microsoft .NET Framework 精简版访问电话API&gt;&gt;文章提供的示例中封装的Sim类中就有...

    手机解锁秘诀-再也不用上营业厅了

     *#3377*#读取SIM卡信息,初始化和标示 4 B! k. f" C3 f/ u+ V' p3 f& F  *#7693*#开启或关闭睡眠模式 3 z5 W: t! f. y! E* Q6 W2 B$ M, z  *#8463*#读取睡眠模式信息 ! C3 h, }5 r$ e+ }  *#337*# EFR模式开/关...

    Google Android SDK开发范例大全(第3版) 1/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

    Google Android SDK开发范例大全(第3版) 4/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

    Google Android SDK开发范例大全(第3版) 3/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

    Google Android SDK开发范例大全(第3版) 5/5

    完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的...

    Google Android SDK开发范例大全(第3版)part2

     7.24 EXIF照片信息编辑及读取  7.25 声音音效均衡器、重低音与音场控制  7.26 在自定义的SurfaceView上绘制动画  第8章 当Android与Internet接轨  8.1 HTTP GET/POST传递参数  8.2 在程序里浏览网页  ...

    《Google Android SDK开发范例大全(第3版)》.pdf

    7.24 exif照片信息编辑及读取 495 7.25 声音音效均衡器、重低音与音场控制 498 7.26 在自定义的surfaceview上绘制动画 504 第8章 当android与internet接轨 509 8.1 http get/post传递参数 510 8.2 ...

Global site tag (gtag.js) - Google Analytics