InternetConnectionState flags = 0; 
int nConnection = 0; 
bool bInternet = InternetGetConnectedState(ref flags,0); 
if (bInternet == false) 
{ 
if (flags == 0) 
{ 
 
} 
int nResult = InternetDial(IntPtr.Zero,"",(int)InternetDialFlags.INTERNET_DIAL_FORCE_PROMPT , ref nConnection , 0); 
switch(nResult) 
{ 
case 87: 
break; 
case 668:
break; 
case 631: 
break; 
default:
break; 
case 0:
break; 
} 
InternetHangup(nConnection,0); 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
[DllImport("wininet.dll",CharSet=CharSet.Auto)] 
static extern bool InternetGetConnectedState(ref InternetConnectionState lpdwFlags, int dwReserved); 
[Flags] 
enum InternetConnectionState: int 
{ 
INTERNET_CONNECTION_MODEM = 0x1, 
INTERNET_CONNECTION_LAN = 0x2, 
INTERNET_CONNECTION_PROXY = 0x4, 
INTERNET_RAS_INSTALLED = 0x10, 
INTERNET_CONNECTION_OFFLINE = 0x20, 
INTERNET_CONNECTION_CONFIGURED = 0x40 
} 
[DllImport("wininet.dll",CharSet=CharSet.Auto)] 
static extern int InternetDial(IntPtr hwndParent,[MarshalAs(UnmanagedType.LPStr)] string strConnection,[MarshalAs(UnmanagedType.U4)]int dwFlags,ref int dwConnection,int dwReserved); 
[Flags] 
enum InternetDialFlags: int 
{ 
INTERNET_DIAL_FORCE_PROMPT =0x2000, 
INTERNET_DIAL_SHOW_OFFLINE =0x4000, 
INTERNET_DIAL_UNATTENDED =0x8000 
} 
[DllImport("wininet.dll",CharSet=CharSet.Auto)] 
static extern int InternetHangup([MarshalAs(UnmanagedType.U4)] int nConnection,[MarshalAs(UnmanagedType.U4)]int dwReserved);