zoukankan      html  css  js  c++  java
  • 获取IMSI

    using System;
    using System.Collections.Generic;
    using System.Text;
    using OpenNETCF.Tapi;
    using System.Runtime.InteropServices;

    namespace test
    {
         public struct SimInfo
        {
            public string Manufacturer;
            public string Model;
            public string Revision;
            public string IMEI;
            public string IMSI;
        }

        /// <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 SimInfo GetGeneralInfo(Line line)
            {
                int subscsize = 0;
                int subscoffset = 0;
                SimInfo lgi = new SimInfo();
                byte[] buffer = new byte[512];
                BitConverter.GetBytes(512).CopyTo(buffer, 0);

                if (lineGetGeneralInfo(line.hLine, buffer) != 0)
                {
                    throw new System.ComponentModel.Win32Exception(System.Runtime.InteropServices.Marshal.GetLastWin32Error(), "TAPI Error: " + System.Runtime.InteropServices.Marshal.GetLastWin32Error().ToString("X"));
                }
               
                subscsize = BitConverter.ToInt32(buffer, 12);
                subscoffset = BitConverter.ToInt32(buffer, 16);
                lgi.Manufacturer = System.Text.Encoding.Unicode.GetString(buffer, subscoffset, subscsize).ToString();
                lgi.Manufacturer = lgi.Manufacturer.Replace("\0", "");

                subscsize = BitConverter.ToInt32(buffer, 20);
                subscoffset = BitConverter.ToInt32(buffer, 24);
                lgi.Model = System.Text.Encoding.Unicode.GetString(buffer, subscoffset, subscsize).ToString();
                lgi.Model = lgi.Model.Replace("\0", "");

                subscsize = BitConverter.ToInt32(buffer, 28);
                subscoffset = BitConverter.ToInt32(buffer, 32);
                lgi.Revision = System.Text.Encoding.Unicode.GetString(buffer, subscoffset, subscsize).ToString();
                lgi.Revision = lgi.Revision.Replace("\0", "");

                subscsize = BitConverter.ToInt32(buffer, 36);
                subscoffset = BitConverter.ToInt32(buffer, 40);
                lgi.IMEI = System.Text.Encoding.Unicode.GetString(buffer, subscoffset, subscsize).ToString();
                lgi.IMEI = lgi.IMEI.Replace("\0", "");

                subscsize = BitConverter.ToInt32(buffer, 44);
                subscoffset = BitConverter.ToInt32(buffer, 48);
                lgi.IMSI = System.Text.Encoding.Unicode.GetString(buffer, subscoffset, subscsize).ToString();
                lgi.IMSI = lgi.IMSI.Replace("\0", "");
                return lgi;
            }
            /// <summary>
            /// 获取sim卡的IMSI
            /// </summary>
            /// <returns></returns>
            public static string GetIMSINumber()
            {
                string result = "";
                try
                {
                    Tapi tapi = new Tapi();
                    tapi.Initialize();
                    Line line = tapi.CreateLine(0, LINEMEDIAMODE.INTERACTIVEVOICE, OpenNETCF.Tapi.LINECALLPRIVILEGE.MONITOR);
                    ControlTapi ctapi = new ControlTapi();
                    SimInfo gi = ctapi.GetGeneralInfo(line);

                    result = gi.IMSI;
                    line.Dispose();
                    tapi.Shutdown();

                }
                catch
                {
                    result = "";
                }

                return result;

            }

            /// <summary>
            /// 获取IMEI的号码
            /// </summary>
            /// <returns></returns>
            public static string GetIMEINumber()
            {
                string result = "";
                try
                {
                    Tapi tapi = new Tapi();
                    tapi.Initialize();
                    Line line = tapi.CreateLine(0, LINEMEDIAMODE.INTERACTIVEVOICE, OpenNETCF.Tapi.LINECALLPRIVILEGE.MONITOR);
                    ControlTapi ctapi = new ControlTapi();
                    SimInfo gi = ctapi.GetGeneralInfo(line);
                    result = gi.IMEI;
                    line.Dispose();
                    tapi.Shutdown();

                }
                catch
                {
                    result = "";
                }

                return result;
            }
        }

        public class ControlCell
        {
            public static string GetCellNumber()
            {
                return string.Empty;
            }
     
        }
    }




    TapiLab  源于网络,可以上网找找。

  • 相关阅读:
    Uboot的串口下载文件命令:loads / loadb / loady
    U-Boot中关于TEXT_BASE,代码重定位,链接地址相关说明
    u-boot-2014.04分析
    Spring MVC + Java 多文件上传及多文件中转上传
    Java 文件上传中转
    backdrop-filter 和filter 写出高斯模糊效果 以及两者区别
    解读浮动闭合最佳方案:clearfix
    JavaScript ES6中export及export default的区别
    webpack配置常用loader加载器
    chrome jsonView插件安装
  • 原文地址:https://www.cnblogs.com/zhaowt001/p/978666.html
Copyright © 2011-2022 走看看