|
Познающий
Регистрация: 22.12.2008
Сообщений: 82
Провел на форуме: 107509
Репутация:
6
|
|
Сообщение от St0nX
InternetGetConnectedState - для проверки попробуй эту.
Не как немогу заюзать , почти все примеры работают не коректо , так как зачитывают LAN соединения ...
Как можно узнать подключен компьютер к сети интернет , чтобы подключения LAN'a не считывалось ?
Сообщение от POS_troi
Для отключения первой найденной Ras-connection:
Код:
using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
namespace RAS
{
class Program
{
[DllImport("rasapi32.dll", SetLastError=true)]
static extern uint RasHangUp(IntPtr hRasConn);
const int MAX_PATH = 260;
const int RAS_MaxDeviceType = 16;
const int RAS_MaxEntryName = 256;
const int RAS_MaxDeviceName = 128;
const int RAS_MaxPhoneNumber = 128;
[DllImport("RASAPI32", SetLastError = true, CharSet = CharSet.Auto)]
static extern int RasEnumConnections(
[In, Out] RASCONN[] lprasconn,
ref int lpcb,
ref int lpcConnections);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
struct RASCONN
{
public int dwSize;
public IntPtr hrasconn;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = RAS_MaxEntryName + 1)]
public string szEntryName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = RAS_MaxDeviceType + 1)]
public string szDeviceType;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = RAS_MaxDeviceName + 1)]
public string szDeviceName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_PATH)]
public string szPhonebook;
public int dwSubEntry;
}
static void Main(string[] args)
{
int conns = 0;
RASCONN[] ras = new RASCONN[256];
ras.Initialize();
ras[0].dwSize = Marshal.SizeOf(typeof(RASCONN));
int lr = ras[0].dwSize * ras.Length;
int ret = RasEnumConnections(ras, ref lr, ref conns);
RasHangUp(ras[0].hrasconn);
}
}
}
И соединение и разрыв.
Код:
using System;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
[DllImport("Wininet.dll")]
private static extern Int32 InternetDial(
IntPtr hwndParent,
string lpszConnectoid,
Int32 dwFlags,
ref Int32 lpdwConnection,
Int32 dwReserved);
const int MAX_PATH = 260;
const int RAS_MaxEntryName = 256;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
struct RASENTRYNAME
{
public int dwSize;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = RAS_MaxEntryName + 1)]
public string szEntryName;
public int dwFlags;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_PATH + 1)]
public string szPhonebook;
}
[DllImport("rasapi32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern uint RasEnumEntries(IntPtr reserved, IntPtr lpszPhonebook,
[In, Out] RASENTRYNAME[] lprasentryname, ref int lpcb, ref int lpcEntries);
[DllImport("wininet.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool InternetCloseHandle(
IntPtr hInternet
);
[DllImport("wininet.dll", SetLastError = true)]
static extern int InternetHangUp(
int Connection,
int ReservedValue
);
static void Main(string[] args)
{
// все соединения
//int cb = Marshal.SizeOf(typeof(RASENTRYNAME)), entries = 0;
//RASENTRYNAME[] entryNames = new RASENTRYNAME[1];
//entryNames[0].dwSize = Marshal.SizeOf(typeof(RASENTRYNAME));
////Get entry number
//uint nRet = RasEnumEntries(IntPtr.Zero, IntPtr.Zero, entryNames, ref cb, ref entries);
//if (entries == 0) return;
//string[] _EntryNames = new string[entries];
//entryNames = new RASENTRYNAME[entries];
//for (int i = 0; i < entries; i++)
//{
// entryNames[i].dwSize = Marshal.SizeOf(typeof(RASENTRYNAME));
//}
//nRet = RasEnumEntries(IntPtr.Zero, IntPtr.Zero, entryNames, ref cb, ref entries);
//for (int i = 0; i < entries; i++)
//{
// _EntryNames[i] = entryNames[i].szEntryName;
// Console.WriteLine(_EntryNames[i]);
//}
//Console.ReadKey();
//return;
/// вызов соединения по модему
Int32 nConnection = new int();
int nResult = InternetDial(
IntPtr.Zero,
"beeline",
(int)InternetDialFlags.INTERNET_DIAL_UNATTENDED, ref nConnection, 0);
Console.WriteLine(nResult.ToString());
Console.WriteLine(nConnection.ToString());
Console.WriteLine("press a key");
Console.ReadKey();
Console.WriteLine(InternetHangUp(nConnection, 0));
Console.WriteLine("should be closed");
}
}
[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
}
[Flags]
enum InternetDialFlags
{
INTERNET_DIAL_FORCE_PROMPT = 0x2000,
INTERNET_DIAL_SHOW_OFFLINE = 0x4000,
INTERNET_DIAL_UNATTENDED = 0x8000
}
}
по теме
http://msdn.microsoft.com/en-us/library/aa365943.aspx
http://msdn.microsoft.com/en-us/library/aa366842(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa366836(VS.85).aspx
некак не разберусь с кодом , мнебы только проверку на активность интернета =/
Последний раз редактировалось Fl0dER; 10.02.2009 в 22:07..
|