如何在.NET中找到Windows拨号规则

Rob*_*Rob 10 .net c# rules tapi dialing

这应该很简单,但显然不是.由于..Windows 3左右,有一个名为Phone或Phone&Modem的控制面板.在那个控制面板中有一堆关于调制解调器如何拨号的信息,假设你有一个调制解调器连接起来.例如,您是否需要拨打9才能离开,区号是什么,等等.如何以编程方式访问此信息?我正在使用C#.NET 2010.

Mar*_*all 12

您将需要在Windows中使用Tapi或从注册表中提取信息.根据Microsoft Tapi 3.0的设计不是为了从托管代码中使用,尽管第一个链接似乎已经完成了.

一些文章要看:

  1. Tapi3.0应用程序开发
  2. VB.Net访问TAPI拨号规则

来自Link#2

看看这些TAPI函数:

  1. lineGetTranslateCaps
  2. lineTranslateAddress
  3. lineTranslateDialog
  4. lineSetCurrentLocation
  5. lineGetCountry
  6. tapiGetLocationInfo

信息存储在注册表中: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Telephony\Locations


Nas*_*ine 8

我找不到通过.Net TAPI包装器访问它的方法(在不太长时间的搜索之后)所以我将procmon找到了存放在注册表中的地方,这里是访问它的代码(你可以适应它符合您的特定需求):

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"));
}
Run Code Online (Sandbox Code Playgroud)

注意 :

  1. 如果有兼容的.net,我建议使用官方API.
  2. 此代码不能保证在Win 7之外的其他操作系统上运行
  3. 如果您需要提示用户填写这些详细信息,您可以使用以下命令启动配置工具:

Process.Start(@"C:\Windows\System32\rundll32.exe",@"C:\Windows\System32\shell32.dll,Control_RunDLL C:\Windows\System32\telephon.cpl");