用于拨号网络连接的Windows API

用于拨号网络连接的Windows API,windows,winapi,networking,windows-7,dial-up,Windows,Winapi,Networking,Windows 7,Dial Up,哪个windows API告诉我拨号连接处于已连接或已断开状态?哪个Windows API允许我通过编程拨号连接。 我想用C#Net在Windows7中开发一个个人应用程序。有人能帮我吗?我相信相关的API可能就是您要找的。不过,这比只调用单个函数有点复杂。首先请查看WinINet的MSDN文档,特别是标题为的部分 要确定是否存在活动拨号连接,请使用wininet.dll中提供的 // possible values returned in lpdwFlags parameter const i

哪个windows API告诉我拨号连接处于已连接或已断开状态?哪个Windows API允许我通过编程拨号连接。
我想用C#Net在Windows7中开发一个个人应用程序。有人能帮我吗?

我相信相关的API可能就是您要找的。不过,这比只调用单个函数有点复杂。

首先请查看WinINet的MSDN文档,特别是标题为的部分

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

// 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);
要拨打网络连接,您可以使用


或者,您可以浏览,这是一种尝试,旨在向.NET平台提供对Windows中远程访问服务(RAS)组件的访问。这可能比自己实现功能更容易。

如果要使用DotRas确定连接是否处于活动状态,只需检查调用RasConnection.GetActiveConnections方法的结果即可。它包含当前处于活动状态的所有基于RAS的连接。
// 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);