Καλημέρα σε όλους!
Επιτρέπστε μου μια μικρή διευκρίνιση.
H συνάρτηση
InternetGetConnectedState() ελέγχει αν ο υπολογιστής είναι απλά συνδεμένος
με κάποιο τρόπο σε κάποια συσκευή αλλά δεν ελέγχει αν υπάρχει πρόσβαση στο Internet.
Αν υποτεθεί ότι μπλοκάρουμε την πρόσβαση στο δίκτυο μέσω κάποιου Firewall,
η συνάρτηση θα συνεχίσει να επιστρέφει True παρόλο που η κυκλοφορία έχει διακοπεί!
Η συνάρτηση αυτή θα επιστρέψει False μόνο αν ο υπολογιστής δεν είναι καν
συνδεμένος με Modem ή οποιαδήποτε άλλη (αν πχ. αποσυνδέσουμε το καλώδιο του δικτύου).
Θα πρέπει λοιπόν να ελέγξουμε αν υπάρχει πρόσβαση σε κάποιον Server της επιλογής μας πχ. Google.gr.
Γι αυτή τη διαδικασία προτείνω τον παρακάτω κώδικα:
Κώδικας:
Option Compare Database
Option Explicit
Const xFlags = -2076180480
Const TestURL = "http://www.google.gr"
Declare Function InternetOpen _
Lib "wininet.dll" Alias "InternetOpenA" _
(ByVal lpszAgent As String, _
ByVal dwAccessType As Long, _
ByVal lpszProxyName As String, _
ByVal lpszProxyBypass As String, _
ByVal lngFlag As Long) As Long
Declare Function InternetOpenUrl _
Lib "wininet.dll" Alias "InternetOpenUrlA" _
(ByVal lngI_Net As Long, _
ByVal lpszUrl As String, _
ByVal lpszHeaders As String, _
ByVal dwHeadersLength As Long, _
ByVal lngFlag As Long, _
ByVal dwContext As Long) As Long
Declare Function InternetCloseHandle _
Lib "wininet.dll" _
(ByVal lngI_Net As Long) As Long
Public Sub TestINetConnection()
Dim I_Net&, MyUrl&
I_Net = InternetOpen(vbNullString, 0&, vbNullString, vbNullString, 0&)
If I_Net Then
MyUrl = InternetOpenUrl(I_Net, TestURL, vbNullString, 0&, xFlags, 0&)
If MyUrl Then
MsgBox "You have Internet access."
InternetCloseHandle MyUrl
Else
MsgBox "You do NOT have Internet access."
End If
End If
InternetCloseHandle I_Net
End Sub
Φιλικά