Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Connaitre si l'ordi est connecté à Internet lorsque celui-ci passe par un proxy

6 réponses
Avatar
Bull
Bonjour,

J'avais posté un message il y a un moment pour savoir comment tester si une
machine était connectée à Internet sans passer par un ping de google par ex.

On m'avait donné le script suivant qui fonctionne très bien :
Public Class NetworkManagement

<DllImport("wininet", SetLastError:=True)> _

Private Shared Function InternetGetConnectedState _

( _

ByRef dwFlags As Int32, _

ByVal dwReserved As Int32 _

) As Boolean

'

End Function

Public Shared Function IsOnline() As Boolean

Return InternetGetConnectedState(0, 0)

End Function

Public Shared Function GetConnectionMode() As InternetConnectionMode

Dim iFlag As Int32

Dim sEnumNames() As String

Dim arEnumValues As Array

Dim t As Type

Dim i As Int32

If (InternetGetConnectedState(iFlag, 0)) Then

t = InternetConnectionMode.Modem.GetType()

sEnumNames = [Enum].GetNames(t)

arEnumValues = [Enum].GetValues(t)

For i = 0 To sEnumNames.Length - 1

If (iFlag And CType(arEnumValues.GetValue(i), String)) Then

' on a trouvé une connection

Return [Enum].Parse(t, sEnumNames(i))

End If

Next i

End If

' aucune connection ...

Return InternetConnectionMode.None

End Function

End Class

'***

'***

' EInternetConnectionMode.vb

Public Enum InternetConnectionMode As Integer

None = &H0

Modem = &H1 ' INTERNET_CONNECTION_MODEM

Lan = &H2 ' INTERNET_CONNECTION_LAN

Proxy = &H3 ' INTERNET_CONNECTION_PROXY

End Enum

Private Sub ping()

If NetworkManagement.IsOnline() Then

connected = True

Else

StatusBarPanel.Text = langueINI.ReadString("StatusBar", "ConnectionFailure")

connected = False

End If

End Sub



Mon problème maintenant est que lorsque l'ordi dont il faut tester la
connexion Internet passe par un proxy, ce code donne tjs connected = False.

J'aimerais donc savoir s'il existe un moyen similaire de tester si le pc est
connecté à internet via un proxy (sans avoir bien sûr à pinguer un site...).

Merci d'avance,
Bull

6 réponses

Avatar
AlexC
Salut,

Un exemple tout fait est donné dans MSDN :

ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/dv_vbcode/html/vbtskCodeExampleDeterminingIfComputerIsConnectedToInternet.htm

:)

"Bull" a écrit dans le message de news:

Bonjour,

J'avais posté un message il y a un moment pour savoir comment tester si
une machine était connectée à Internet sans passer par un ping de google
par ex.

On m'avait donné le script suivant qui fonctionne très bien :
Public Class NetworkManagement

<DllImport("wininet", SetLastError:=True)> _

Private Shared Function InternetGetConnectedState _

( _

ByRef dwFlags As Int32, _

ByVal dwReserved As Int32 _

) As Boolean

'

End Function

Public Shared Function IsOnline() As Boolean

Return InternetGetConnectedState(0, 0)

End Function

Public Shared Function GetConnectionMode() As InternetConnectionMode

Dim iFlag As Int32

Dim sEnumNames() As String

Dim arEnumValues As Array

Dim t As Type

Dim i As Int32

If (InternetGetConnectedState(iFlag, 0)) Then

t = InternetConnectionMode.Modem.GetType()

sEnumNames = [Enum].GetNames(t)

arEnumValues = [Enum].GetValues(t)

For i = 0 To sEnumNames.Length - 1

If (iFlag And CType(arEnumValues.GetValue(i), String)) Then

' on a trouvé une connection

Return [Enum].Parse(t, sEnumNames(i))

End If

Next i

End If

' aucune connection ...

Return InternetConnectionMode.None

End Function

End Class

'***

'***

' EInternetConnectionMode.vb

Public Enum InternetConnectionMode As Integer

None = &H0

Modem = &H1 ' INTERNET_CONNECTION_MODEM

Lan = &H2 ' INTERNET_CONNECTION_LAN

Proxy = &H3 ' INTERNET_CONNECTION_PROXY

End Enum

Private Sub ping()

If NetworkManagement.IsOnline() Then

connected = True

Else

StatusBarPanel.Text = langueINI.ReadString("StatusBar",
"ConnectionFailure")

connected = False

End If

End Sub



Mon problème maintenant est que lorsque l'ordi dont il faut tester la
connexion Internet passe par un proxy, ce code donne tjs connected =
False.

J'aimerais donc savoir s'il existe un moyen similaire de tester si le pc
est connecté à internet via un proxy (sans avoir bien sûr à pinguer un
site...).

Merci d'avance,
Bull



Avatar
Bull
Oui mais ce script fait justement un ping d'un site pour tester, or je
voudrais essayer d'éviter cela si possible. Une idée ? :)

"AlexC" <#NOSPAM)#NOSPAM)> a écrit dans le
message de news:
Salut,

Un exemple tout fait est donné dans MSDN :

ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/dv_vbcode/html/vbtskCodeExampleDeterminingIfComputerIsConnectedToInternet.htm

:)

"Bull" a écrit dans le message de news:

Bonjour,

J'avais posté un message il y a un moment pour savoir comment tester si
une machine était connectée à Internet sans passer par un ping de google
par ex.

On m'avait donné le script suivant qui fonctionne très bien :
Public Class NetworkManagement

<DllImport("wininet", SetLastError:=True)> _

Private Shared Function InternetGetConnectedState _

( _

ByRef dwFlags As Int32, _

ByVal dwReserved As Int32 _

) As Boolean

'

End Function

Public Shared Function IsOnline() As Boolean

Return InternetGetConnectedState(0, 0)

End Function

Public Shared Function GetConnectionMode() As InternetConnectionMode

Dim iFlag As Int32

Dim sEnumNames() As String

Dim arEnumValues As Array

Dim t As Type

Dim i As Int32

If (InternetGetConnectedState(iFlag, 0)) Then

t = InternetConnectionMode.Modem.GetType()

sEnumNames = [Enum].GetNames(t)

arEnumValues = [Enum].GetValues(t)

For i = 0 To sEnumNames.Length - 1

If (iFlag And CType(arEnumValues.GetValue(i), String)) Then

' on a trouvé une connection

Return [Enum].Parse(t, sEnumNames(i))

End If

Next i

End If

' aucune connection ...

Return InternetConnectionMode.None

End Function

End Class

'***

'***

' EInternetConnectionMode.vb

Public Enum InternetConnectionMode As Integer

None = &H0

Modem = &H1 ' INTERNET_CONNECTION_MODEM

Lan = &H2 ' INTERNET_CONNECTION_LAN

Proxy = &H3 ' INTERNET_CONNECTION_PROXY

End Enum

Private Sub ping()

If NetworkManagement.IsOnline() Then

connected = True

Else

StatusBarPanel.Text = langueINI.ReadString("StatusBar",
"ConnectionFailure")

connected = False

End If

End Sub



Mon problème maintenant est que lorsque l'ordi dont il faut tester la
connexion Internet passe par un proxy, ce code donne tjs connected =
False.

J'aimerais donc savoir s'il existe un moyen similaire de tester si le pc
est connecté à internet via un proxy (sans avoir bien sûr à pinguer un
site...).

Merci d'avance,
Bull







Avatar
AlexC
ben tu essayes d'afficher la page d'un site web si il y a une erreur tu es
connecté sinon ben non ;)

"Bull" a écrit dans le message de
news:
Oui mais ce script fait justement un ping d'un site pour tester, or je
voudrais essayer d'éviter cela si possible. Une idée ? :)

"AlexC" <#NOSPAM)#NOSPAM)> a écrit dans le
message de news:
> Salut,
>
> Un exemple tout fait est donné dans MSDN :
>
>


ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/dv_vbcode/html/vbtskCodeExamp
leDeterminingIfComputerIsConnectedToInternet.htm
>
> :)
>
> "Bull" a écrit dans le message de news:
>
>> Bonjour,
>>
>> J'avais posté un message il y a un moment pour savoir comment tester si
>> une machine était connectée à Internet sans passer par un ping de


google
>> par ex.
>>
>> On m'avait donné le script suivant qui fonctionne très bien :
>> Public Class NetworkManagement
>>
>> <DllImport("wininet", SetLastError:=True)> _
>>
>> Private Shared Function InternetGetConnectedState _
>>
>> ( _
>>
>> ByRef dwFlags As Int32, _
>>
>> ByVal dwReserved As Int32 _
>>
>> ) As Boolean
>>
>> '
>>
>> End Function
>>
>> Public Shared Function IsOnline() As Boolean
>>
>> Return InternetGetConnectedState(0, 0)
>>
>> End Function
>>
>> Public Shared Function GetConnectionMode() As InternetConnectionMode
>>
>> Dim iFlag As Int32
>>
>> Dim sEnumNames() As String
>>
>> Dim arEnumValues As Array
>>
>> Dim t As Type
>>
>> Dim i As Int32
>>
>> If (InternetGetConnectedState(iFlag, 0)) Then
>>
>> t = InternetConnectionMode.Modem.GetType()
>>
>> sEnumNames = [Enum].GetNames(t)
>>
>> arEnumValues = [Enum].GetValues(t)
>>
>> For i = 0 To sEnumNames.Length - 1
>>
>> If (iFlag And CType(arEnumValues.GetValue(i), String)) Then
>>
>> ' on a trouvé une connection
>>
>> Return [Enum].Parse(t, sEnumNames(i))
>>
>> End If
>>
>> Next i
>>
>> End If
>>
>> ' aucune connection ...
>>
>> Return InternetConnectionMode.None
>>
>> End Function
>>
>> End Class
>>
>> '***
>>
>> '***
>>
>> ' EInternetConnectionMode.vb
>>
>> Public Enum InternetConnectionMode As Integer
>>
>> None = &H0
>>
>> Modem = &H1 ' INTERNET_CONNECTION_MODEM
>>
>> Lan = &H2 ' INTERNET_CONNECTION_LAN
>>
>> Proxy = &H3 ' INTERNET_CONNECTION_PROXY
>>
>> End Enum
>>
>> Private Sub ping()
>>
>> If NetworkManagement.IsOnline() Then
>>
>> connected = True
>>
>> Else
>>
>> StatusBarPanel.Text = langueINI.ReadString("StatusBar",
>> "ConnectionFailure")
>>
>> connected = False
>>
>> End If
>>
>> End Sub
>>
>>
>>
>> Mon problème maintenant est que lorsque l'ordi dont il faut tester la
>> connexion Internet passe par un proxy, ce code donne tjs connected > >> False.
>>
>> J'aimerais donc savoir s'il existe un moyen similaire de tester si le


pc
>> est connecté à internet via un proxy (sans avoir bien sûr à pinguer un
>> site...).
>>
>> Merci d'avance,
>> Bull
>>
>
>




Avatar
Bull
Bah ça revient un peu au même que de faire un ping ça surcharge un serveur
web pour rien ;-)

Bon pas grave, vais me débrouiller
merci :)

"AlexC" <#NOSPAM)#NOSPAM)> a écrit dans le
message de news:
ben tu essayes d'afficher la page d'un site web si il y a une erreur tu es
connecté sinon ben non ;)

"Bull" a écrit dans le message de
news:
Oui mais ce script fait justement un ping d'un site pour tester, or je
voudrais essayer d'éviter cela si possible. Une idée ? :)

"AlexC" <#NOSPAM)#NOSPAM)> a écrit dans le
message de news:
> Salut,
>
> Un exemple tout fait est donné dans MSDN :
>
>


ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/dv_vbcode/html/vbtskCodeExamp
leDeterminingIfComputerIsConnectedToInternet.htm
>
> :)
>
> "Bull" a écrit dans le message de news:
>
>> Bonjour,
>>
>> J'avais posté un message il y a un moment pour savoir comment tester
>> si
>> une machine était connectée à Internet sans passer par un ping de


google
>> par ex.
>>
>> On m'avait donné le script suivant qui fonctionne très bien :
>> Public Class NetworkManagement
>>
>> <DllImport("wininet", SetLastError:=True)> _
>>
>> Private Shared Function InternetGetConnectedState _
>>
>> ( _
>>
>> ByRef dwFlags As Int32, _
>>
>> ByVal dwReserved As Int32 _
>>
>> ) As Boolean
>>
>> '
>>
>> End Function
>>
>> Public Shared Function IsOnline() As Boolean
>>
>> Return InternetGetConnectedState(0, 0)
>>
>> End Function
>>
>> Public Shared Function GetConnectionMode() As InternetConnectionMode
>>
>> Dim iFlag As Int32
>>
>> Dim sEnumNames() As String
>>
>> Dim arEnumValues As Array
>>
>> Dim t As Type
>>
>> Dim i As Int32
>>
>> If (InternetGetConnectedState(iFlag, 0)) Then
>>
>> t = InternetConnectionMode.Modem.GetType()
>>
>> sEnumNames = [Enum].GetNames(t)
>>
>> arEnumValues = [Enum].GetValues(t)
>>
>> For i = 0 To sEnumNames.Length - 1
>>
>> If (iFlag And CType(arEnumValues.GetValue(i), String)) Then
>>
>> ' on a trouvé une connection
>>
>> Return [Enum].Parse(t, sEnumNames(i))
>>
>> End If
>>
>> Next i
>>
>> End If
>>
>> ' aucune connection ...
>>
>> Return InternetConnectionMode.None
>>
>> End Function
>>
>> End Class
>>
>> '***
>>
>> '***
>>
>> ' EInternetConnectionMode.vb
>>
>> Public Enum InternetConnectionMode As Integer
>>
>> None = &H0
>>
>> Modem = &H1 ' INTERNET_CONNECTION_MODEM
>>
>> Lan = &H2 ' INTERNET_CONNECTION_LAN
>>
>> Proxy = &H3 ' INTERNET_CONNECTION_PROXY
>>
>> End Enum
>>
>> Private Sub ping()
>>
>> If NetworkManagement.IsOnline() Then
>>
>> connected = True
>>
>> Else
>>
>> StatusBarPanel.Text = langueINI.ReadString("StatusBar",
>> "ConnectionFailure")
>>
>> connected = False
>>
>> End If
>>
>> End Sub
>>
>>
>>
>> Mon problème maintenant est que lorsque l'ordi dont il faut tester la
>> connexion Internet passe par un proxy, ce code donne tjs connected >> >> False.
>>
>> J'aimerais donc savoir s'il existe un moyen similaire de tester si le


pc
>> est connecté à internet via un proxy (sans avoir bien sûr à pinguer un
>> site...).
>>
>> Merci d'avance,
>> Bull
>>
>
>








Avatar
AlexC
Surcharger ???, heu c'est un peu excessif comme terme non ? afficher une
page comme celle de google doit etre d'à peine quelques Ko ... si on faisait
une requete de 3Go là je veux bien ..
mais bon si tu trouve une autre solution je suis preneur ! :)

"Bull" a écrit dans le message de
news:%
Bah ça revient un peu au même que de faire un ping ça surcharge un serveur
web pour rien ;-)

Bon pas grave, vais me débrouiller
merci :)

"AlexC" <#NOSPAM)#NOSPAM)> a écrit dans le
message de news:
> ben tu essayes d'afficher la page d'un site web si il y a une erreur tu


es
> connecté sinon ben non ;)
>
> "Bull" a écrit dans le message de
> news:
>> Oui mais ce script fait justement un ping d'un site pour tester, or je
>> voudrais essayer d'éviter cela si possible. Une idée ? :)
>>
>> "AlexC" <#NOSPAM)#NOSPAM)> a écrit dans


le
>> message de news:
>> > Salut,
>> >
>> > Un exemple tout fait est donné dans MSDN :
>> >
>> >
>


ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1036/dv_vbcode/html/vbtskCodeExamp
> leDeterminingIfComputerIsConnectedToInternet.htm
>> >
>> > :)
>> >
>> > "Bull" a écrit dans le message de news:
>> >
>> >> Bonjour,
>> >>
>> >> J'avais posté un message il y a un moment pour savoir comment tester
>> >> si
>> >> une machine était connectée à Internet sans passer par un ping de
> google
>> >> par ex.
>> >>
>> >> On m'avait donné le script suivant qui fonctionne très bien :
>> >> Public Class NetworkManagement
>> >>
>> >> <DllImport("wininet", SetLastError:=True)> _
>> >>
>> >> Private Shared Function InternetGetConnectedState _
>> >>
>> >> ( _
>> >>
>> >> ByRef dwFlags As Int32, _
>> >>
>> >> ByVal dwReserved As Int32 _
>> >>
>> >> ) As Boolean
>> >>
>> >> '
>> >>
>> >> End Function
>> >>
>> >> Public Shared Function IsOnline() As Boolean
>> >>
>> >> Return InternetGetConnectedState(0, 0)
>> >>
>> >> End Function
>> >>
>> >> Public Shared Function GetConnectionMode() As InternetConnectionMode
>> >>
>> >> Dim iFlag As Int32
>> >>
>> >> Dim sEnumNames() As String
>> >>
>> >> Dim arEnumValues As Array
>> >>
>> >> Dim t As Type
>> >>
>> >> Dim i As Int32
>> >>
>> >> If (InternetGetConnectedState(iFlag, 0)) Then
>> >>
>> >> t = InternetConnectionMode.Modem.GetType()
>> >>
>> >> sEnumNames = [Enum].GetNames(t)
>> >>
>> >> arEnumValues = [Enum].GetValues(t)
>> >>
>> >> For i = 0 To sEnumNames.Length - 1
>> >>
>> >> If (iFlag And CType(arEnumValues.GetValue(i), String)) Then
>> >>
>> >> ' on a trouvé une connection
>> >>
>> >> Return [Enum].Parse(t, sEnumNames(i))
>> >>
>> >> End If
>> >>
>> >> Next i
>> >>
>> >> End If
>> >>
>> >> ' aucune connection ...
>> >>
>> >> Return InternetConnectionMode.None
>> >>
>> >> End Function
>> >>
>> >> End Class
>> >>
>> >> '***
>> >>
>> >> '***
>> >>
>> >> ' EInternetConnectionMode.vb
>> >>
>> >> Public Enum InternetConnectionMode As Integer
>> >>
>> >> None = &H0
>> >>
>> >> Modem = &H1 ' INTERNET_CONNECTION_MODEM
>> >>
>> >> Lan = &H2 ' INTERNET_CONNECTION_LAN
>> >>
>> >> Proxy = &H3 ' INTERNET_CONNECTION_PROXY
>> >>
>> >> End Enum
>> >>
>> >> Private Sub ping()
>> >>
>> >> If NetworkManagement.IsOnline() Then
>> >>
>> >> connected = True
>> >>
>> >> Else
>> >>
>> >> StatusBarPanel.Text = langueINI.ReadString("StatusBar",
>> >> "ConnectionFailure")
>> >>
>> >> connected = False
>> >>
>> >> End If
>> >>
>> >> End Sub
>> >>
>> >>
>> >>
>> >> Mon problème maintenant est que lorsque l'ordi dont il faut tester


la
>> >> connexion Internet passe par un proxy, ce code donne tjs connected > >> >> False.
>> >>
>> >> J'aimerais donc savoir s'il existe un moyen similaire de tester si


le
> pc
>> >> est connecté à internet via un proxy (sans avoir bien sûr à pinguer


un
>> >> site...).
>> >>
>> >> Merci d'avance,
>> >> Bull
>> >>
>> >
>> >
>>
>>
>
>




Avatar
Zoury
Salut Bull! :O)

Return InternetGetConnectedState(0, 0)



J'imagine que tu as utilisé IsOnline() tel quel ?

et si tu essais comme ceci :
'***
'NOTE : la valeur de la constante INTERNET_CONNECTION_PROXY
' est de &H4 et non &H3 car il s'agit d'un flag (bitmask)
' pour plus de détail sur ce qu'est un bitmask, regarde ce message :
'http://groups.google.com/groups?threadm=uwtNY921CHA.1768%40TK2MSFTNGP12

Public Enum InternetConnectionMode As Integer
None = &H0
Modem = &H1 ' INTERNET_CONNECTION_MODEM
Lan = &H2 ' INTERNET_CONNECTION_LAN
Proxy = &H4 ' INTERNET_CONNECTION_PROXY
End Enum

Public Shared Function IsOnlineViaProxy() As Boolean

Dim flags As Long

' on obtient le flag
InternetGetConnectedState(flags, 0)

' test le bit de connection proxy
IsOnlineViaProxy = _
(flags And (Int32)InternetConnectionMode.Proxy) (Int32)InternetConnectionMode.Proxy

End Function
'***

tu pourras implémenter les autre méthodes si tu veux... regarde ce site pour
un exemple en VB6.. (même fonctionnement)
http://vbnet.mvps.org/code/network/internetgetconnectedstate.htm

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/