반응형

* VBNET API 이용 인터넷 연결 상태 체크 (internet Connect State Check) 예제...

 

메인 화면

 

전체 소스 코드

Form1.vb

 

Public Class Form1

    Private Declare Function InternetGetConnectedState Lib "wininet.dll" _
   (ByRef lpdwFlags As Int32, ByVal dwReserved As Int32) As Boolean

    Private Enum ConnectionStates
        Modem = &H1
        LAN = &H2
        Proxy = &H4
        RasInstalled = &H10
        Offline = &H20
        Configured = &H40
    End Enum


    Dim thMain As System.Threading.Thread
    Dim bCheck As Boolean = False

    '폼이 로드 되면...
    '아래와 같이 Form_Load 이벤트로 해도 상관 없음.
    'Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    'End Sub
    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
        CheckForIllegalCrossThreadCalls = False

        thMain = New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf Thread_Tick))

        '백그라운드 스레드로 지정
        thMain.IsBackground = True
        bCheck = True
        button1.Text = "Internet Connect Check Start"
        thMain.Start()

        MyBase.OnLoad(e)
    End Sub


    Protected Overrides Sub OnClosed(ByVal e As System.EventArgs)

        If Not thMain Is Nothing Then

            If bCheck Then '스레드가 돌고 있으면...
                '스레드 강제 종료...
                thMain.Abort()
            Else '스레드가 일시정지 상태로 대기 하고 있으면...
                '대기 중인 스레드 종료...
                thMain.Interrupt()
            End If

            thMain = Nothing
        End If

        '가비지 콜렉트 실행
        GC.Collect()

        MyBase.OnClosed(e)
    End Sub


    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click

        If Not bCheck Then

            bCheck = True
            '일시정지된 스레드 다시 시작
            thMain.Resume()
            button1.Text = "Internet Connect Check Start"

        Else

            bCheck = False
            '스레드 일시정지
            thMain.Suspend()
            button1.Text = "Internet Connect Check Stop"

        End If

    End Sub

    Public Shared Function Get_InternetConnectedState() As Boolean
        Dim lngFlags As Long

        lngFlags = 0
        Get_InternetConnectedState = False

        If InternetGetConnectedState(lngFlags, 0) Then
            'connected.
            Get_InternetConnectedState = True

        Else
            'not connected.
            Get_InternetConnectedState = False
        End If

    End Function



    Sub Thread_Tick()

        While (True)

            If Get_InternetConnectedState() Then
                label1.Text = "인터넷 연결이 되어 있습니다."
            Else
                label1.Text = "인터넷 연결이 끊어 졌습니다."
            End If

            System.Threading.Thread.Sleep(1000)
        End While

    End Sub
    
End Class

API 선언

* 예제 결과

 

 

반응형

+ Recent posts