Windows API для набора номера сетевого подключения - PullRequest
0 голосов
/ 08 февраля 2011

Какой Windows API сообщает мне, что подключение удаленного доступа находится в подключенном или отключенном состоянии?Какой Windows API позволяет мне программно набирать коммутируемое соединение.Я хочу разработать приложение для личного использования в Windows 7 на C # .Net.Может ли кто-нибудь помочь мне?

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

Начните с ознакомления с документацией MSDN для WinINet, а именно с раздела Установка удаленного подключения к Интернету .

Чтобы определить, существует ли активное подключение удаленного доступаиспользуйте функцию InternetGetConnectedState , предусмотренную в 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);

. Для набора номера сетевого подключения вы можете использовать функцию 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 , который представляет собой попытку предоставить доступ к компонентам службы удаленного доступа (RAS) в Windows к платформе .NET.Вероятно, это проще, чем реализовать эту функцию самостоятельно.

1 голос
/ 08 февраля 2011

Я полагаю, RasDialDlg и связанный с ним API может быть тем, что вы ищете.Хотя это немного сложнее, чем просто вызывать одну функцию.

...