¿Cómo programar en VB para desconectarse y conectarse a la red?
Opción explícita
Const privada NO_ERROR mientras = 0
Const privada MAX_ADAPTER_NAME mientras = 256
Tipo privado IP_ADAPTER_INDEX_MAP
Índice tan largo
wsName Como cadena * MAX_ADAPTER_NAME
Tipo final
Tipo privado IP_INTERFACE_INFO
NumAdapters tan largo p>
Adaptador(0) Como IP_ADAPTER_INDEX_MAP
Tipo de finalización
Declaración privada Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destino ByRef como cualquiera, ByRef Fuente como cualquiera, longitud de ByVal tan larga)
Función de declaración privada IpReleaseAddress Lib "IPHLPAPI.dll" (ByRef AdapterInfo como IP_ADAPTER_INDEX_MAP) mientras
Función de declaración privada IpRenewAddress Lib "IPHLPAPI.dll " ( ByRef AdapterInfo As IP_ADAPTER_INDEX_MAP) Siempre
Función de declaración privada GetInterfaceInfo Lib "IPHLPAPI.dll" (ByRef pIfTable Como Cualquiera, ByRef dwOutBufLen Mientras) Siempre
Subcomando privado1_Click( )
Atenuar i mientras, lOut mientras, lNum mientras
Atenuar III como IP_INTERFACE_INFO, arrTmp() como byte
Atenuar aIAIM() como IP_ADAPTER_INDEX_MAP , IAIM como IP_ADAPTER_INDEX_MAP
i = GetInterfaceInfo(III, lOut)
ReDim arrTmp(lOut - 1)
i = GetInterfaceInfo(arrTmp(0), lOut )
Si <> NO_ERROR entonces salgo de Sub
CopyMemory lNum, arrTmp(0), 4
Debug.Print lNum "Interfaz(es) de red; ¡¡Total!!"
ReDim aIAIM(lNum - 1)
Para i = 0 a lNum - 1
CopiarMemoria aIAIM(i), arrTmp(4 + i * Len(IAIM)), Len(IAIM)
Depurar.Imprimir "Índice:";
aIAIM(i).Index; " Nombre:"; StrConv(aIAIM(0).wsName, vbFromUnicode)
Siguiente
Debug.Print IpReleaseAddress(aIAIM(0)) 'Romper Abra la primera tarjeta de red
End Sub
Private Sub Command2_Click()
Atenuar i As Long, lOut As Long, lNum As Long
Atenuar III como IP_INTERFACE_INFO, arrTmp() como byte
Atenuar aIAIM() como IP_ADAPTER_INDEX_MAP, IAIM como IP_ADAPTER_INDEX_MAP
i = GetInterfaceInfo(III, lOut)
ReDim arrTmp(lOut - 1)
i = GetInterfaceInfo(arrTmp(0), lOut)
Si <> NO_ERROR entonces salgo de Sub
CopyMemory lNum , arrTmp(0), 4
Debug.Print lNum; "¡¡¡Total de interfaces de red!!!"
ReDim aIAIM(lNum - 1)
Para i = 0 a lNum - 1
CopiarMemoria aIAIM(i), arrTmp(4 + i * Len(IAIM)), Len(IAIM)
Debug.Print "Índice :"; aIAIM(i).Index; " Nombre:"; StrConv(aIAIM(0).wsName, vbFromUnicode)
Siguiente
Depurar.Imprimir IpRenewAddress(aIAIM(0) ) 'Restaurar la primera tarjeta de red
End Sub