¿Cómo llama VB al comando ping para determinar si está conectado?
Const privada IP_REQ_TIMED_OUT Mientras = (11000 + 10)
Const privada IP_BAD_REQ Mientras = (11000 + 11)
Const privada IP_BAD_ROUTE mientras = (11000 + 12)
Const privada IP_PACKET_TOO_BIG mientras = (11000 + 9) OpcionesData mientras
Tipo de fin
Tipo privado ICMP_ECHO_REPLY
Dirección tan larga
estado Tan larga
Tiempo de ida y vuelta tan larga
Tamaño de datos como
Puntero de datos Tan largas
Opciones como ICMP_OPTIONS
Datos como cadena * 250
Tipo final
Tipo privado WSADATA
wVersion como entero
wHighVersion como entero
szDescription(0 a szDescription(0 a MAX_WSADescription) como byte
szSystemStatus(0 a MAX_WSASYSStatus) como byte
wMaxSockets siempre
wMaxUDPDG siempre
dwVendorInfo siempre
Tipo de fin
Declarar públicamente la función timeGetTime Lib "winmm .dll" () Mientras
Función de declaración privada WSAStartup Lib "wsock32" (ByVal wVersionRequired Mientras, lpWSADATA Como WSADATA) Mientras
Función de declaración privada WSACleanup Lib "wsock32" ( ) El tiempo que dure
Función de declaración privada IcmpCreateFile Lib "icmp.dll" () El tiempo que dure
Función de declaración privada inet_addr Lib "wsock32" (ByVal s As String) El tiempo que dure
Función de declaración privada IcmpCloseHandle Lib "icmp.dll" (ByVal IcmpHandle siempre y cuando)
Función de declaración privada IcmpSendEcho Lib "icmp.dll" (ByVal IcmpHandle mientras, ByVal DestinationAddress mientras, ByVal RequestData como cadena, ByVal
RequestSize Mientras, ByVal RequestOptions Mientras, ReplyBuffer Como ICMP_ECHO_REPLY, ByVal ReplySize Mientras, ByVal Timeout Mientras) Mientras
'Función de declaración privada WSAGetLastError Lib " wsock32" () Mientras
'Función de declaración privada gethostname Lib "wsock32" (ByVal szHost como cadena, ByVal dwHostLen mientras) mientras
' Función de declaración privada gethostbyname Lib "wsock32" (ByVal szHost como cadena) mientras p> p>
'Private Declare Sub CopyMemory Lib "kernel32" Alias " RtlMoveMemory" (xDest As Any, xSource As Any, ByVal nbytes As Long)
Función privada GetStatusCode(status As Long) ) Como cadena
En caso de error, Ir a ErrLine
Atenuar mensaje como cadena
GetStatusCode = ""
Seleccionar estado del caso
Caso IP_SUCCESS: Msg = "IP exitosa"
Caso INADDR_NONE: Msg = "inet_addr: formato de IP incorrecto"
Caso IP_BUF_TOO_SMALL: Msg = "ip buf too_small" p>
Caso IP_DEST_NET_UNREACHABLE: Msg = "ip dest net inalcanzable"
Caso IP_DEST_HOST_UNREACHABLE: Msg = "Host de destino inalcanzable"
Caso IP_DEST_PROT_UNREACHABLE: Msg = "Puerto de destino inalcanzable"
p>Caso IP_DEST_PORT_UNREACHABLE: Msg = "Puerto de destino inalcanzable"
Caso IP_NO_RESOURCES: Msg = "ip sin recurso"
Caso IP_BAD_OPTION: Msg = "ip mala opción"
Caso IP_HW_ERROR: Msg = "ip hw_error"
Caso IP_PACKET_TOO_BIG: Msg = "ip paquete too_big"
Caso IP_REQ_TIMED_OUT: Msg = "ip heavy request timeout"
Caso IP_BAD_REQ: Msg = "ip bad re-solicitud"
Caso IP_BAD_ROUTE: Msg = "ip bad route"
Caso IP_TTL_EXPIRED_TRANSIT: Msg = "ip ttl tránsito caducado"
Caso IP_TTL_EXPIRED_REASSEM: Msg = "ip ttl expiró reensamblaje"
C
ase IP_PARAM_ PROBLEM: Msg = "problema de parámetro de ip"
Caso IP_SOURCE_QUENCH: Msg = "extinción de fuente de ip"
Caso IP_OPTION_TOO_BIG: Msg = "opción de ip demasiado grande"
Caso IP_BAD_DESTINATION: Msg = "ip objetivo incorrecto"
Caso IP_ADDR_DELETED: Msg = "dirección IP eliminada"
Caso IP_SPEC_MTU_CHANGE: Msg = "cambio de mtu de especificación de IP" p>
Caso IP_MTU_CHANGE: Msg = "ip mtu_change"
Caso IP_UNLOAD: Msg = "ip unload"
Caso IP_ADDR_ADDED: Msg = "ip agregar dirección"
p>
Caso IP_GENERAL_FAILURE: Msg= "Fallo general de IP"
Caso IP_PENDING: Msg= "IP pendiente"
Caso PING_TIMEOUT: Msg= "ping timeout "
Caso más: Msg = "mensaje desconocido devuelto"
Finalizar selección
GetStatusCode = Msg
Salir de la función
ErrrLine:
Función final
Ping de función privada (sAddress como cadena, sDataToSend como cadena, ECHO como ICMP_ECHO_REPLY) siempre
En caso de error, vaya a ErrLine
Atenuar hPort mientras
Atenuar dwAddress mientras
dwAddress = inet_addr(sAddress)
Si dwAddress <> INADDR_NONE Entonces
hPort = IcmpCreateFile()
Si hPort entonces
Llame a IcmpSendEcho(hPort, dwAddress, sDataToSend, Len(sDataToSend), 0, ECHO, Len(ECHO) , PING _TIMEOUT)
Ping = ECHO.status
Llamar a IcmpCloseHandle(hPort)
Finalizar si
Si no
Ping = INADDR_NONE
Finalizar si
Salir de la función
ErrrLine:
Ping = INADDR_NONE
Fin Función
Función pública PingIP(ByVal szIp As String) como booleana
En caso de error, GoTo ErrLine
Atenuar WSAD como WSADATA
Atenuar ECHO como ICMP_ECHO_REPLY
Atenuar ret siempre
'
Retraso 150
PingIP = False
PingTime = Vacío
Si WSAStartup(WS_VERSION_REQD, WSAD) = IP_SUCCESS Entonces
ret = Ping( Trim(szIp), "tanaya", ECHO)
PingTime = ECHO.
Función de salida
Finalizar si
Finalizar si
Salir de la función
ErrLine:
Finalizar función
Luego crea un formulario y un comando
Subcomando privado1_Click ()
Si PingIP("la IP a la que necesita acceder")=True Entonces
'Agregue el código que necesita para ejecutarlo usted mismo
else p>
'Agrega el código que necesitas ejecutar cuando no estés conectado a Internet
end if.