Cela devrait être simple, mais n'est pas apparemment. Depuis. Ils sont environ 3 environ, il y a un panneau de commande appelé téléphone ou modem. Dans ce panneau de contrôle, il s'agit d'un groupe d'informations sur la manière dont un modem en manifestation, en supposant que vous ayez un modem raccordé. Par exemple, devez-vous composer le 9 pour sortir, quel est l'indicatif régional, etc. Comment puis-je accéder à ces informations par programme? J'utilise c # .NET 2010. P>
3 Réponses :
Vous aurez besoin d'utiliser TAPI sous Windows ou de tirer les informations du registre. Selon Microsoft Tapi 3.0 n'a pas été conçu pour être utilisé à partir du code géré, bien que le premier lien semble l'avoir fait. P>
Certains articles à regarder: p>
du lien # 2 p>
Regardez ces fonctions TAPI: P>
linegetTranslatecaps code> li>
-
LINÉTRANSLATADDRESSE CODE> LI>
-
linetranslateialog code> li>
-
listesTCurrentLocation code> li>
-
linegetCountry code> li>
-
TapIGetLocationInfo code>
li>
ol>
Les informations sont stockées dans le registre à l'adresse suivante: HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Téléphonie \ emplacements Code> P>
Je n'ai pas pu trouver un moyen d'y accéder via un wrapper .NET TAPI (après une recherche pas si longue), donc j'ai tiré sur ProCmon a trouvé où il a été stocké dans le registre, et voici le code qui l'accède (vous pouvez l'adapter à vos besoins spécifiques):
RegistryKey locationsKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Telephony\Locations"); if (locationsKey == null) return; string[] locations = locationsKey.GetSubKeyNames(); foreach (var location in locations) { RegistryKey key = locationsKey.OpenSubKey(location); if (key == null) continue; Console.WriteLine("AreaCode {0}",key.GetValue("AreaCode")); Console.WriteLine("Country {0}",(int) key.GetValue("Country")); Console.WriteLine("OutsideAccess {0}", key.GetValue("OutsideAccess")); }
Bit plus de code pour obtenir le préfixe
class Program { static void Main(string[] args) { string rootLocation = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Telephony\Locations"; getRegistryValues(rootLocation); Console.ReadLine(); } public static void getRegistryValues(string rootLocation) { RegistryKey locationsKey = Registry.LocalMachine.OpenSubKey(rootLocation); if (locationsKey == null) return; string[] locations = locationsKey.GetSubKeyNames(); Console.WriteLine(locations.Length.ToString()); foreach (var location in locations) { Console.WriteLine(location.ToString()); RegistryKey key = locationsKey.OpenSubKey(location); if (key == null) continue; foreach (string keyName in key.GetValueNames()) { if (keyName.Equals("Prefixes")) { string[] Prefixes = ((string[])(key.GetValue(keyName))); Console.Write("Prefixes "); foreach (string prefix in Prefixes) { Console.Write(prefix); } } else { Console.WriteLine(keyName + " {0}", key.GetValue(keyName)); } } getRegistryValues(rootLocation+@"\"+location); } }