Показать сообщение отдельно

  #1  
Старый 10.02.2009, 22:03
Fl0dER
Познающий
Регистрация: 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..
 
Ответить с цитированием