哪个 Windows API 告诉我拨号连接处于连接或断开状态?哪个 Windows API 允许我以编程方式拨打拨号连接。我想使用 C#.Net 在 Windows 7 中开发一个供我个人使用的应用程序。有人可以帮助我吗?
问问题
2283 次
2 回答
1
我相信RasDialDlg和相关的 API 可能是您正在寻找的。不过,这比仅调用单个函数要复杂一些。
于 2011-02-08T05:42:46.607 回答
1
首先查看 WinINet 的 MSDN 文档,特别是标题为“建立与 Internet 的拨号连接”的部分。
要确定是否存在活动的拨号连接,请使用 wininet.dll 中提供的InternetGetConnectedState
函数。
// 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
功能。
// 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 项目,该项目试图在 Windows 中提供对 .NET 平台的远程访问服务 (RAS) 组件的访问。这可能比自己实现功能更容易。
于 2011-02-08T06:02:26.307 回答