用于拨打网络连接的Windows API

问题描述:

哪个Windows API告诉我一个拨号连接处于连接或断开状态?哪个Windows API允许我以编程方式拨打拨号连接。 我想用C#.Net在Windows 7中开发个人应用程序。有人能帮助我吗?用于拨打网络连接的Windows API

我相信RasDialDlg和相关的API可能是你在找什么。不过,这比调用单个函数有点复杂。

首先检查WinINet的MSDN文档,特别是标题为Establishing a Dial-Up Connection to the Internet的章节。

要确定是否存在活动的拨号连接,请使用wininet.dll中提供的InternetGetConnectedState function

// possible values returned in lpdwFlags parameter 
const int INTERNET_CONNECTION_CONFIGURED = 0x40; 
const int INTERNET_CONNECTION_LAN = 0x02; 
const int INTERNET_CONNECTION_MODEM = 0x01; 
const int INTERNET_CONNECTION_OFFLINE = 0x20; 
const int INTERNET_CONNECTION_PROXY = 0x04; 
const int INTERNET_RAS_INSTALLED = 0x10; 

[DllImport("wininet.dll", SetLastError=true, CharSet=CharSet.Auto)] 
static extern bool InternetGetConnectedState(out int lpdwFlags, int dwReserved); 

并拨打网络连接,您可以使用InternetDial function

// possible values for dwFlags parameter 
const int INTERNET_AUTODIAL_FORCE_ONLINE = 0x1; 
const int INTERNET_AUTODIAL_FORCE_UNATTENDED = 0x2; 
const int INTERNET_DIAL_FORCE_PROMPT = 0x2000; 
const int INTERNET_DIAL_UNATTENDED = 0x8000; 
const int INTERNET_DIAL_SHOW_OFFLINE = 0x4000; 

// possible return values 
const int ERROR_SUCCESS = 0x0; 
const int ERROR_INVALID_PARAMETER = 0x57; 
const int ERROR_NO_CONNECTION = 0x29C; 
const int ERROR_USER_DISCONNECTION = 0x277; 

[DllImport("wininet.dll", SetLastError=true, CharSet=CharSet.Auto)] 
static extern int InternetDial(IntPtr hWndParent, string lpszConnected, 
           int dwFlags, ref int lpdwConnection, 
           int dwReserved); 

或者,你可以探索DotRas project,这是一个试图提供访问远程访问服务于Windows系统(RAS)组件到.NET平台。这可能比自己实现功能更容易。

+0

如果您想使用DotRas来确定连接是否处于活动状态,您只需检查调用RasConnection.GetActiveConnections方法的结果。它包含当前活动的所有基于RAS的连接。 – 2011-08-04 15:52:08