Grâce à FWeil voici une version qui permet d'ajuster le TimeOut (et donc le temps de blocage). Attention ! Si vous diminuez trop #PING_TIMEOUT, vous risquez de "rater" un poste qui est pourtant présent.
Code : Tout sélectionner
Procedure QuickOpenNetworkConnection(sIPAddress.s,Port)
; FWeil & Zapman
#PING_TIMEOUT = 500
Echo.ICMP_ECHO_REPLY
EchoMessage.s = "PingTest " + Space(20)
hFile = IcmpCreateFile_()
IPAddress=MakeIPAddress(StringField(sIPAddress,1,"."),StringField(sIPAddress,2,"."),StringField(sIPAddress,3,"."),StringField(sIPAddress+".",4,"."))
lngResult = IcmpSendEcho_(hFile, IPAddress, EchoMessage, Len(EchoMessage), 0, Echo, SizeOf(ICMP_ECHO_REPLY), #PING_TIMEOUT)
If lngResult = 0
PingResult = Echo\Status * -1
Else
PingResult = Echo\RoundTripTime
EndIf
lngResult = IcmpCloseHandle_(hFile)
If PingResult >= 0
Result= OpenNetworkConnection(sIPAddress.s,Port)
Else
Result = 0
EndIf
ProcedureReturn Result
EndProcedure