Torna al Thread

public class RetrieveSimPhoneBook { public RetrieveSimPhoneBook() { } private const Int64 S_OK = 0x00000000; public const int SIM_CAPSTYPE_ALL = 0x3F; // public const int SIM_PBSTORAGE_SIM = 0x10; // public const int SIM_SMSSTORAGE_SIM = 0x2; // [StructLayout(LayoutKind.Sequential)] public struct SIMPHONEBOOKENTRY { public uint cbSize; // public uint dwParams; // [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string lpszAddress; // public uint dwAddressType; // public uint dwNumPlan; // [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string lpszText; // } [DllImport("cellcore.dll")] public static extern int SimInitialize(uint dwFlags, int lpfnCallBack, uint dwParam, ref int lphSim); [DllImport("cellcore.dll", SetLastError = true)] public static extern int SimDeinitialize(int hSim); [DllImport("cellcore.dll")] public static extern int SimGetPhonebookStatus(int hSim, uint dwLocation, ref uint lpdwUsed, ref uint lpdwTotal); [DllImport("cellcore.dll")] public static extern int SimReadPhonebookEntry(int hSim, uint dwLocation, uint dwIndex, ref SIMPHONEBOOKENTRY entry); public static List<string[]> GetSIMContactList() { int hSim = 0; List<string[]> list = new List<string[]>(); try { int res = SimInitialize(0, 0, 0, ref hSim); if (res != 0) throw new Exception("Exception Contacts in the SIM Card"); uint mynumber = 0; uint totNumber= 0; result = SimGetPhonebookStatus(hSim, SIM_PBSTORAGE_SIM, ref mynumber , ref totNumber); for (int i = 1; i <= mynumber ; i++) { SIMPHONEBOOKENTRY entry = new SIMPHONEBOOKENTRY(); entry.cbSize = (uint)Marshal.SizeOf(typeof(SIMPHONEBOOKENTRY)); res = SimReadPhonebookEntry(hSim, SIM_PBSTORAGE_SIM, (uint)i, ref entry); list.Add(new string[2] { entry.lpszText.Trim(), entry.lpszAddress.Trim() }); } return list; } catch { throw; } finally { SimDeinitialize(hSim); } } }
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5