Сегодня мы напишем программу на языке Visual Basic, которая умеет определять ip адрес сайта по его названию (домену), а также проверять подключен ли Интернет на компьютере
Писать программу мы будем в среде программирования Microsoft Visual Basic 6.0. Итак, начнем, запустим среду, создадим стандартный проект и добавляем 3 кнопки (CommandButton) и одно текстовое поле (TextBox). Затем задайте в окне свойств названия объектов в поле caption:
- Command1 = Узнать IP Сайта
- Command2 = Включен ли Интернет
- Command3 = Выход
- TextBox (поле text) = www.yandex.ru

Исходный код программы на языке Visual Basic
Теперь перейдем к коду, для начала в код формы вставьте следующие:
Private Declare Function RasEnumConnections Lib _
"RasApi32.dll" Alias "RasEnumConnectionsA" _
(lpRasCon As Any, lpcb As Long, lpcConnections As Long) As Long
Private Declare Function RasGetConnectStatus Lib _
"RasApi32.dll" Alias "RasGetConnectStatusA" _
(ByVal hRasCon As Long, lpStatus As Any) As Long
Private Const RAS95_MaxEntryName = 256
Private Const RAS95_MaxDeviceType = 16
Private Const RAS95_MaxDeviceName = 32
Private Type RASCONN95
dwSize As Long
hRasCon As Long
szEntryName(RAS95_MaxEntryName) As Byte
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
Private Type RASCONNSTATUS95
dwSize As Long
RasConnState As Long
dwError As Long
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
Public Function IsConnected() As Boolean
Dim TRasCon(255) As RASCONN95
Dim lg As Long
Dim lpcon As Long
Dim RetVal As Long
Dim Tstatus As RASCONNSTATUS95
TRasCon(0).dwSize = 412
lg = 256 * TRasCon(0).dwSize
RetVal = RasEnumConnections(TRasCon(0), lg, lpcon)
Tstatus.dwSize = 160
RetVal = RasGetConnectStatus(TRasCon(0).hRasCon, Tstatus)
If Tstatus.RasConnState = &H2000 Then
IsConnected = True
Else
IsConnected = False
End If
End Function
Private Sub Command1_Click()
WinsockInit
MsgBox "IP Адрес сайта:" & HostByName(Text1.Text)
WSACleanUp
End Sub
Private Sub Command2_Click()
'если есть соединение, то IsConnected() = True, иначе False
Select Case IsConnected()
Case False
MsgBox "Интернет не подключен"
Case True
MsgBox "Интернет включен"
End Select
End Sub
Private Sub Command3_Click()
End
End Sub
Здесь мы с Вами используем API функции Visual Basic, а в коде Command1 указанно, что при нажатии на эту кнопку будет появляться сообщение с ip адресом сайта. В коде Command2 проверяется, подключен ли Интернет и также выводится соответствующее сообщение. А в коде Command3 просто завершаем нашу программу, т.е. при нажатии произойдет выход. Но с кодом еще не все, Вам теперь нужно добавить модуль через меню «Проект ->добавить модуль» и вставить в него следующий код:
Option Explicit
Public Const SOCKET_ERROR = -1
Public Const AF_INET = 2
Public Const PF_INET = AF_INET
Public Const MAXGETHOSTSTRUCT = 1024
Public Const SOCK_STREAM = 1
Public Const MSG_PEEK = 2
Private Type SockAddr
sin_family As Integer
sin_port As Integer
sin_addr As String * 4
sin_zero As String * 8
End Type
Private Type T_WSA
wVersion As Integer
wHighVersion As Integer
szDescription(0 To 255) As Byte
szSystemStatus(0 To 128) As Byte
iMaxSockets As Integer
iMaxUdpDg As Integer
lpVendorInfo As Long
End Type
Dim WSAData As T_WSA
Type Inet_Address
Byte4 As String * 1
Byte3 As String * 1
Byte2 As String * 1
Byte1 As String * 1
End Type
Public IPStruct As Inet_Address
Public Type T_Host
h_name As Long
h_aliases As Long
h_addrtype As Integer
h_length As Integer
h_addr_list As Long
End Type
Declare Sub CopyMemory Lib "kernel32.dll" Alias _
"RtlMoveMemory" (Dest As Any, Src As Any, ByVal cb&)
Declare Function gethostbyaddr Lib "wsock32.dll" _
(addr As Long, ByVal addr_len As Long, _
ByVal addr_type As Long) As Long
Declare Function inet_addr Lib "wsock32.dll" _
(ByVal addr As String) As Long
Declare Function GetHostByName Lib _
"wsock32.dll" Alias "gethostbyname" _
(ByVal HostName As String) As Long
Declare Function GetHostName Lib _
"wsock32.dll" Alias "gethostname" _
(ByVal HostName As String, HostLen As Long) As Long
Declare Function WSAStartup Lib "wsock32.dll" _
(ByVal a As Long, b As T_WSA) As Long
Declare Function WSACleanUp Lib _
"wsock32.dll" Alias "WSACleanup" () As Integer
Function HostByName(sHost As String) As String
Dim s As String
Dim p As Long
Dim Host As T_Host
Dim ListAddress As Long
Dim ListAddr As Long
Dim Address As Long
s = String(64, 0)
p = GetHostByName(sHost)
If p = SOCKET_ERROR Then
Exit Function
Else
If p 0 Then
CopyMemory Host.h_name, ByVal p, Len(Host)
ListAddress = Host.h_addr_list
CopyMemory ListAddr, ByVal ListAddress, 4
CopyMemory Address, ByVal ListAddr, 4
HostByName = InetAddrLongToString(Address)
Else
HostByName = "Ошибка DNS "
End If
End If
End Function
Private Function InetAddrLongToString(Address As Long) As String
CopyMemory IPStruct, Address, 4
InetAddrLongToString = CStr(Asc(IPStruct.Byte4)) + "." + CStr(Asc(IPStruct.Byte3)) _
+ "." + CStr(Asc(IPStruct.Byte2)) + "." + CStr(Asc(IPStruct.Byte1))
End Function
Function HostByAddress(ByVal sAddress As String) As String
Dim lAddress As Long
Dim p As Long
Dim HostName As String
Dim Host As T_Host
lAddress = inet_addr(sAddress)
p = gethostbyaddr(lAddress, 4, PF_INET)
If p 0 Then
CopyMemory Host, ByVal p, Len(Host)
HostName = String(256, 0)
CopyMemory ByVal HostName, ByVal Host.h_name, 256
If HostName = "" Then HostByAddress = "Unable to Resolve Address"
HostByAddress = Left(HostName, InStr(HostName, Chr(0)) - 1)
Else
HostByAddress = "Ошибка DNS "
End If
End Function
Public Sub WinsockInit()
WSAStartup &H101, WSAData
End Sub
Вот теперь Вы можете запустить проект и проверить работоспособность программы, а затем и скомпилировать ее.
На этом все, пока!

Прикольно, мало где найдешь исходный код какой-нибудь программы, хоть я и не знаю язык Visual Basic, но за такие статьи отдельное спасибо!