Ce bout de code nous permet d'extraire le numéro de téléphone de la carte sim et son type:
- Unknown
- International
- National
- NetworkSpecific
- Subscriber
- Alphanumeric
- Abbreviated
Le code utilise l'api SmsGetPhoneNumber pour le récupérer ainsi que des parties de code unsafe
Source / Exemple :
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
// NB dans les propriété du projet: Onglet build-> puis cochet la case Allow unsafe code.
namespace Type_et_NuméroTelephone
{
public partial class frmMain : Form
{
public enum AddressType
{
Unknown,
International,
National,
NetworkSpecific,
Subscriber,
Alphanumeric,
Abbreviated
}
public struct PhoneAddress
{
public AddressType AddressType;
public String Address;
}
[DllImport("sms.dll")]
public static extern IntPtr SmsGetPhoneNumber(IntPtr psmsaAddress);
public frmMain()
{
InitializeComponent();
}
unsafe public static PhoneAddress GetPhoneNumber()
{
PhoneAddress phoneaddr = new PhoneAddress();
// Réservation d'un espace de 100 octet
Byte[] buffer = new Byte[100];
// Pointer le buffer
fixed (byte* pAddr = buffer)
{
IntPtr res = SmsGetPhoneNumber((IntPtr)pAddr);
if (res != IntPtr.Zero)
MessageBox.Show("Erreur, l'opération a echoué.");
// pointer le début du buffer contenant les infos
byte* pCurrent = pAddr;
// Récuperer le type de l'adresse (4 premiers octets)
phoneaddr.AddressType = (AddressType)Marshal.ReadInt32((IntPtr)pCurrent);
// Se déplacer 4 octets.
pCurrent += Marshal.SizeOf(phoneaddr.AddressType);
// Récupérer le numéro de la carte sim (chaine de caracteres unicode).
phoneaddr.Address = Marshal.PtrToStringUni((IntPtr)pCurrent);
}
return phoneaddr;
}
private void mnuQuit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void frmMain_Load(object sender, EventArgs e)
{
// Prendre les informations.
PhoneAddress ad = GetPhoneNumber();
lblPhoneNbr.Text = ad.Address;
lblType.Text = ad.AddressType.ToString();
}
}
}
Conclusion :
Pour ceux qui veulent utiliser la tapi
http://www.pdafr.com/codes/NET-COMPACT-FRAMEWORK-OBTENIR-NUMERO-TELEPHONE-CARTE-SIM_40013.aspx
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.