El otro día ayudando a una persona surgió la necesidad de que una aplicación se conectara y se desconectara de Internet automáticamente utilizando un módem estándar, a través de la línea telefónica. La aplicación estaba escrita en Visual Basic 6 (nada de .NET). Tras darle vueltas un rato llegué a esta solución que pasa por usar la API de Windows para conseguirlo:

' Declaraciones de la API
Private Declare Function InternetAutodial Lib "wininet.dll" _
(ByVal dwFlags As Long, ByVal dwReserved As Long) As Long
Private Declare Function InternetAutodialHangup Lib "wininet.dll" _
(ByVal dwReserved As Long) As Long

Private Const INTERNET_AUTODIAL_FORCE_ONLINE = 1
Private Const INTERNET_AUTODIAL_FORCE_UNATTENDED = 2

Con ellas, para conectarse a Internet de forma automática con un módem, sin intervención del usuario, sólo hay que escribir:

InternetAutodial INTERNET_AUTODIAL_FORCE_UNATTENDED, 0

Para desconectarse al terminar de hacer lo que necesitamos en la Red sólo hay que escribir:

InternetAutodialHangup 0

Si queremos conectarnos pero pedir confirmación al usuario antes la instrucción precisa es:

InternetAutodial INTERNET_AUTODIAL_FORCE_ONLINE, 0

Con esto se solucionó el problema.

Es muy fácil pasar estas declaraciones de la API a .NET y hacer uso de las mismas desde aplicaciones en C# o VN.NET.

Escrito por un humano, no por una IA