예제 #1
0
파일: RasApi.cs 프로젝트: cnucky/huan
        /// <summary>
        /// 通过API获取宽带连接名称 win7已测试
        /// </summary>
        /// <returns></returns>
        public static List <string> GetAllAdslName()
        {
            List <string> list          = new List <string>();
            int           lpNames       = 1;
            int           entryNameSize = 0;
            int           lpSize        = 0;

            RasEntryName[] names = null;
            entryNameSize   = Marshal.SizeOf(typeof(RasEntryName));
            lpSize          = lpNames * entryNameSize;
            names           = new RasEntryName[lpNames];
            names[0].dwSize = entryNameSize;
            uint retval = RasEnumEntries(null, null, names, ref lpSize, out lpNames);

            //if we have more than one connection, we need to do it again
            if (lpNames > 1)
            {
                names = new RasEntryName[lpNames];
                for (int i = 0; i < names.Length; i++)
                {
                    names[i].dwSize = entryNameSize;
                }
                retval = RasEnumEntries(null, null, names, ref lpSize, out lpNames);
            }
            if (lpNames > 0)
            {
                for (int i = 0; i < names.Length; i++)
                {
                    list.Add(names[i].szEntryName);
                }
            }
            return(list);
        }
예제 #2
0
        /// <summary>
        ///     获取所有拨号连接名称
        /// </summary>
        /// <returns></returns>
        public static string[] GetDialupName()
        {
            int lpNames = 1;
            int lpSize  = 0;

            RasEntryName[] names = null;

            int entryNameSize = Marshal.SizeOf(typeof(RasEntryName));

            lpSize = lpNames * entryNameSize;

            names = new RasEntryName[lpNames];

            names[0].dwSize = entryNameSize;

            uint retval = RasEnumEntries(null, null, names, ref lpSize, out lpNames);

            if (retval != 0 && lpNames <= 0)
            {
                return(null);
            }

            if (lpNames > 1)
            {
                names = new RasEntryName[lpNames];
                for (int i = 0; i < names.Length; i++)
                {
                    names[i].dwSize = entryNameSize;
                }
                retval = RasEnumEntries(null, null, names, ref lpSize, out lpNames);

                if (retval != 0)
                {
                    return(null);
                }
            }

            if (lpNames > 0)
            {
                var m_ConnectionNames = new string[names.Length];

                for (int i = 0; i < names.Length; i++)
                {
                    m_ConnectionNames[i] = names[i].szEntryName;
                }

                return(m_ConnectionNames);
            }

            return(null);
        }
예제 #3
0
        /// <summary>
        /// Get all entries from RAS
        /// </summary>
        /// <param name="allConns"></param>
        /// <returns>
        /// 0: success with entries
        /// 1: success but no entries found
        /// 2: failed
        /// </returns>
        public static uint GetAllConns(ref string[] allConns)
        {
            int  lpNames       = 1;
            int  entryNameSize = 0;
            int  lpSize        = 0;
            uint retval        = ERROR_SUCCESS;

            RasEntryName[] names = null;

            entryNameSize = Marshal.SizeOf(typeof(RasEntryName));
            lpSize        = lpNames * entryNameSize;

            names           = new RasEntryName[lpNames];
            names[0].dwSize = entryNameSize;

            retval = RAS.RasEnumEntries(null, null, names, ref lpSize, out lpNames);

            //if we have more than one connection, we need to resize
            if (retval == ERROR_BUFFER_TOO_SMALL)
            {
                names = new RasEntryName[lpNames];
                for (int i = 0; i < names.Length; i++)
                {
                    names[i].dwSize = entryNameSize;
                }

                retval = RAS.RasEnumEntries(null, null, names, ref lpSize, out lpNames);
            }

            if (retval == ERROR_SUCCESS)
            {
                if (lpNames == 0)
                {
                    // no entries found.
                    return(1);
                }

                allConns = new string[names.Length];

                for (int i = 0; i < names.Length; i++)
                {
                    allConns[i] = names[i].szEntryName;
                }
                return(0);
            }
            else
            {
                return(2);
            }
        }
예제 #4
0
        /// <summary>
        /// Get all entries from RAS
        /// </summary>
        /// <param name="allConns"></param>
        /// <returns>
        /// 0: success with entries
        /// 1: success but no entries found
        /// 2: failed
        /// </returns>
        public static uint GetAllConns(ref string[] allConns)
        {
            int  lpNames       = 0;
            int  entryNameSize = 0;
            int  lpSize        = 0;
            uint retval        = ERROR_SUCCESS;

            RasEntryName[] names = null;

            entryNameSize = Marshal.SizeOf(typeof(RasEntryName));

            // Windows Vista or later:  To determine the required buffer size, call RasEnumEntries
            // with lprasentryname set to NULL. The variable pointed to by lpcb should be set to zero.
            // The function will return the required buffer size in lpcb and an error code of ERROR_BUFFER_TOO_SMALL.
            retval = RasEnumEntries(null, null, null, ref lpSize, out lpNames);

            if (retval == ERROR_BUFFER_TOO_SMALL)
            {
                names = new RasEntryName[lpNames];
                for (int i = 0; i < names.Length; i++)
                {
                    names[i].dwSize = entryNameSize;
                }

                retval = RasEnumEntries(null, null, names, ref lpSize, out lpNames);
            }

            if (retval == ERROR_SUCCESS)
            {
                if (lpNames == 0)
                {
                    // no entries found.
                    return(1);
                }

                allConns = new string[names.Length];

                for (int i = 0; i < names.Length; i++)
                {
                    allConns[i] = names[i].szEntryName;
                }
                return(0);
            }
            else
            {
                return(2);
            }
        }
예제 #5
0
        /// <summary>
        /// Get all entries from RAS
        /// </summary>
        /// <param name="allConns"></param>
        /// <returns>
        /// 0: success with entries
        /// 1: success but no entries found
        /// 2: failed
        /// </returns>
        public static uint GetAllConns(ref string[] allConns)
        {
            int lpNames = 0;
            int entryNameSize = 0;
            int lpSize = 0;
            uint retval = ERROR_SUCCESS;
            RasEntryName[] names = null;

            entryNameSize = Marshal.SizeOf(typeof(RasEntryName));

            // Windows Vista or later:  To determine the required buffer size, call RasEnumEntries
            // with lprasentryname set to NULL. The variable pointed to by lpcb should be set to zero.
            // The function will return the required buffer size in lpcb and an error code of ERROR_BUFFER_TOO_SMALL.
            retval = RasEnumEntries(null, null, null, ref lpSize, out lpNames);

            if (retval == ERROR_BUFFER_TOO_SMALL)
            {
                names = new RasEntryName[lpNames];
                for (int i = 0; i < names.Length; i++)
                {
                    names[i].dwSize = entryNameSize;
                }

                retval = RasEnumEntries(null, null, names, ref lpSize, out lpNames);
            }

            if (retval == ERROR_SUCCESS)
            {
                if (lpNames == 0)
                {
                    // no entries found.
                    return 1;
                }

                allConns = new string[names.Length];

                for (int i = 0; i < names.Length; i++)
                {
                    allConns[i] = names[i].szEntryName;
                }
                return 0;
            }
            else
            {
                return 2;
            }
        }
예제 #6
0
파일: Operation.cs 프로젝트: coolinc/XWall
            static string[] getConnections()
            {
                //var dir = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections";
                //var key = Registry.CurrentUser.CreateSubKey(dir);
                //return key.GetValueNames();
                int lpNames       = 1;
                int entryNameSize = 0;
                int lpSize        = 0;

                RasEntryName[] names = null;

                entryNameSize = Marshal.SizeOf(typeof(RasEntryName));
                lpSize        = lpNames * entryNameSize;

                names           = new RasEntryName[lpNames];
                names[0].dwSize = entryNameSize;

                uint retval = NativeMethods.RasEnumEntries(null, null, names, ref lpSize, out lpNames);

                //if we have more than one connection, we need to do it again
                if (lpNames > 1)
                {
                    names = new RasEntryName[lpNames];
                    for (int i = 0; i < names.Length; i++)
                    {
                        names[i].dwSize = entryNameSize;
                    }
                    retval = NativeMethods.RasEnumEntries(null, null, names, ref lpSize, out lpNames);
                }

                var connections = new List <string>()
                {
                    ""
                };

                var length = lpNames > 0 ? names.Length : 0;

                for (int i = 0; i < length; i++)
                {
                    connections.Add(names[i].szEntryName);
                }

                return(connections.ToArray());
            }
예제 #7
0
파일: Operation.cs 프로젝트: coolinc/XWall
            static string[] getConnections() {
                //var dir = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections";
                //var key = Registry.CurrentUser.CreateSubKey(dir);
                //return key.GetValueNames();
                int lpNames = 1;
                int entryNameSize = 0;
                int lpSize = 0;

                RasEntryName[] names = null;

                entryNameSize = Marshal.SizeOf(typeof(RasEntryName));
                lpSize = lpNames * entryNameSize;

                names = new RasEntryName[lpNames];
                names[0].dwSize = entryNameSize;

                uint retval = NativeMethods.RasEnumEntries(null, null, names, ref lpSize, out lpNames);

                //if we have more than one connection, we need to do it again
                if (lpNames > 1) {
                    names = new RasEntryName[lpNames];
                    for (int i = 0; i < names.Length; i++) {
                        names[i].dwSize = entryNameSize;
                    }
                    retval = NativeMethods.RasEnumEntries(null, null, names, ref lpSize, out lpNames);
                }

                var connections = new List<string>() { "" };

                var length = lpNames > 0 ? names.Length : 0;

                for (int i = 0; i < length; i++) {
                    connections.Add(names[i].szEntryName);
                }

                return connections.ToArray();
            }
예제 #8
0
    public RASDisplay()
    {
        m_connected = true;

        RAS     lpras     = new RAS();
        RASCONN lprasConn = new RASCONN();

        lprasConn.dwSize   = Marshal.SizeOf(typeof(RASCONN));
        lprasConn.hrasconn = IntPtr.Zero;

        int lpcb           = 0;
        int lpcConnections = 0;
        int nRet           = 0;

        lpcb = Marshal.SizeOf(typeof(RASCONN));


        nRet = RAS.RasEnumConnections(ref lprasConn, ref lpcb, ref
                                      lpcConnections);


        if (nRet != 0)
        {
            m_connected = false;
            return;
        }

        if (lpcConnections > 0)
        {
            //for (int i = 0; i < lpcConnections; i++)

            //{
            RasStats stats = new RasStats();

            m_ConnectedRasHandle = lprasConn.hrasconn;
            RAS.RasGetConnectionStatistics(lprasConn.hrasconn, stats);


            m_ConnectionName = lprasConn.szEntryName;

            int Hours   = 0;
            int Minutes = 0;
            int Seconds = 0;

            Hours   = ((stats.dwConnectionDuration / 1000) / 3600);
            Minutes = ((stats.dwConnectionDuration / 1000) / 60) - (Hours * 60);
            Seconds = ((stats.dwConnectionDuration / 1000)) - (Minutes * 60) - (Hours * 3600);


            m_duration = Hours + " hours " + Minutes + " minutes " + Seconds + " secs";
            m_TX       = stats.dwBytesXmited;
            m_RX       = stats.dwBytesRcved;


            //}
        }
        else
        {
            m_connected = false;
        }


        int lpNames       = 1;
        int entryNameSize = 0;
        int lpSize        = 0;

        RasEntryName[] names = null;

        entryNameSize = Marshal.SizeOf(typeof(RasEntryName));
        lpSize        = lpNames * entryNameSize;

        names           = new RasEntryName[lpNames];
        names[0].dwSize = entryNameSize;

        uint retval = RAS.RasEnumEntries(null, null, names, ref lpSize, out lpNames);

        //if we have more than one connection, we need to do it again
        if (lpNames > 1)
        {
            names = new RasEntryName[lpNames];
            for (int i = 0; i < names.Length; i++)
            {
                names[i].dwSize = entryNameSize;
            }

            retval = RAS.RasEnumEntries(null, null, names, ref lpSize, out lpNames);
        }
        m_ConnectionNames = new string[names.Length];


        if (lpNames > 0)
        {
            for (int i = 0; i < names.Length; i++)
            {
                m_ConnectionNames[i] = names[i].szEntryName;
            }
        }
    }