I have not found code that can successfully opena dn close a
connection, so I created the class below. It will open, disconnect and
check the type of internet connection you have.
Paul R. Johnson
using System;
using System.Collections;
using System.Data;
using System.Diagnostics;
namespace InternetDialer
{
public class Dialer
{
[System.Runtime.InteropServices.DllImport("wininet. dll",
EntryPoint="InternetGetConnectedState", ExactSpelling=true,
CharSet=System.Runtime.InteropServices.CharSet.Ans i,
SetLastError=true)]
private static extern bool InternetGetConnectedState(ref Int32
lpdwFlags, Int32 dwReserved);
[System.Runtime.InteropServices.DllImport("Wininet. dll",
EntryPoint="InternetDial", ExactSpelling=true,
CharSet=System.Runtime.InteropServices.CharSet.Ans i,
SetLastError=true)]
private static extern Int32 InternetDial(IntPtr hwndParent, string
lpszConnectoid, Int32 dwFlags, ref Int32 lpdwConnection, Int32
dwReserved);
[System.Runtime.InteropServices.DllImport("Wininet. dll",
EntryPoint="InternetHangUp", ExactSpelling=true,
CharSet=System.Runtime.InteropServices.CharSet.Ans i,
SetLastError=true)]
private static extern Int32 InternetHangUp(Int32 lpdwConnection,
Int32 dwReserved);
private enum Flags: int
{
//Local system uses a LAN to connect to the Internet.
INTERNET_CONNECTION_LAN = 0X2,
//Local system uses a modem to connect to the Internet.
INTERNET_CONNECTION_MODEM = 0X1,
//Local system uses a proxy server to connect to the Internet.
INTERNET_CONNECTION_PROXY = 0X4,
//Type Visual Basic 6 code here...
//Local system has RAS installed.
INTERNET_RAS_INSTALLED = 0X10
}
//Declaration Used For InternetDialUp.
private enum DialUpOptions: int
{
INTERNET_DIAL_UNATTENDED = 0X8000,
INTERNET_DIAL_SHOW_OFFLINE = 0X4000,
INTERNET_DIAL_FORCE_PROMPT = 0X2000
}
private const int ERROR_SUCCESS = 0X0;
private const int ERROR_INVALID_PARAMETER = 0X87;
private Int32 mlConnection;
public string GetConnectionType()
{
Int32 lngFlags = 0;
if (InternetGetConnectedState(ref lngFlags, 0))
{
//connected.
if ((lngFlags & (int)Flags.INTERNET_CONNECTION_LAN)!=0)
{
//LAN connection.
return "LAN connection.";
}
else if ((lngFlags & (int)Flags.INTERNET_CONNECTION_MODEM)!=0)
{
//Modem connection.
return "Modem connection.";
}
else if ((lngFlags & (int)Flags.INTERNET_CONNECTION_PROXY)!=0)
{
//Proxy connection.
return "Proxy connection.";
}
return "Not connected.";
}
else
{
//not connected.
return "Not connected.";
}
}
public void Connect()
{
Int32 DResult = 0;
DResult = InternetDial(IntPtr.Zero, "My Connection",
Convert.ToInt32(DialUpOptions.INTERNET_DIAL_UNATTE NDED), ref
mlConnection, 0);
if (DResult == ERROR_SUCCESS)
Console.WriteLine("Dial Up Successful");
else
Console.WriteLine("UnSuccessFull Error Code");
}
public void Disconnect()
{
Int32 Result = 0;
if (! (mlConnection == 0))
{
Result = InternetHangUp(mlConnection, 0);
if (Result == 0)
Console.WriteLine("Hang up successful");
else
Console.WriteLine("Hang up NOT successful");
}
else
Console.WriteLine("You must dial a connection first!");
}
}
}