照着这段例子写的,但是报错,无法找到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;
}