您的位置:首页 > 其它

如何从sim卡中读取手机号码?

2017-01-03 04:29 579 查看
照着这段例子写的,但是报错,无法找到sms.dll啊,请问如何解决,还有其他方法吗?
/// <summary>

        /// Identifies the phone number type specified.

        /// </summary>

        public enum AddressType

        {

            /// <summary>Unknown phone number type.</summary>

            Unknown,

            /// <summary>International phone number.</summary>

            International,

            /// <summary>National phone number.</summary>

            National,

            /// <summary>Network-specific phone number.</summary>

            NetworkSpecific,

            /// <summary>Subscriber phone number.</summary>

            Subscriber,

            /// <summary>Alphanumeric phone number.</summary>

            Alphanumeric,

            /// <summary>Abbreviated phone number.</summary>

            Abbreviated

        }

        /// <summary>

        /// Information about the phone number.

        /// </summary>

        public struct PhoneAddress

        {

            /// <summary>The address type.</summary>

            public AddressType AddressType;

            /// <summary>The phone number in string format.</summary>

            public String Address;

        }

        public Form1()

        {

            InitializeComponent();

        }

        [DllImport("cellcore.dll")]

        private static extern int lineGetGeneralInfo(IntPtr hLigne, byte[] lpLineGeneralInfo);

        [DllImport("sms.dll ")]

        private static extern IntPtr SmsGetPhoneNumber(IntPtr psmsaAddress); 

        private void button1_Click(object sender, EventArgs e)

        {

            MessageBox.Show(GetPhoneNumber().Address);

        }

        /// <summary>

        /// Gets the phone number from the SIM.

        /// </summary>

        /// <returns>PhoneAddress structure with phone number.</returns>

        unsafe public static PhoneAddress GetPhoneNumber()

        {

            PhoneAddress phoneaddr = new PhoneAddress();

            Byte[] buffer = new Byte[516];

            fixed (byte* pAddr = buffer)

            {

                IntPtr res = SmsGetPhoneNumber((IntPtr)pAddr);

                if (res != IntPtr.Zero)

                    throw new Exception("Could not get phone number from SIM");

                byte* pCurrent = pAddr;

                phoneaddr.AddressType = (AddressType)Marshal.ReadInt32((IntPtr)pCurrent);

                pCurrent += Marshal.SizeOf(phoneaddr.AddressType);

                phoneaddr.Address = Marshal.PtrToStringUni((IntPtr)pCurrent);

            }

            return phoneaddr;

        } 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: