如何在VB中获得本机的ip地址

作者&投稿:大狐固 (若有异议请与网页底部的电邮联系)
vb中如何获取本机ip地址~

定义以下过程即可获取本机ip地址
Sub GetMyIP() Dim strComputer As String Dim objWMI As Object Dim colIP As Object Dim IP As Object Dim I As Integer strComputer = "." Set objWMI = GetObject("winmgmts://" & strComputer & "/root/cimv2") Set colIP = objWMI.ExecQuery _ ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") For Each IP In colIP If Not IsNull(IP.IPAddress) Then For I = LBound(IP.IPAddress) To UBound(IP.IPAddress) MsgBox "IP 地址:" & IP.IPAddress(I) & Chr(10) & _ Next End If NextEnd Sub

建议用API函数,以下完整示例:
(其中直接调用GetIPAddress函数即可获取IP)

------------------


Option Explicit

Public Const MIN_SOCKETS_REQD As Long = 1
Public Const WS_VERSION_REQD As Long = &H101
Public Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100 And &HFF&
Public Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF&
Public Const SOCKET_ERROR As Long = -1
Public Const ERROR_SUCCESS As Long = 0
Public Const WSADESCRIPTION_LEN = 257
Public Const WSASYS_STATUS_LEN = 129
Public Const MAX_WSADescription = 256
Public Const MAX_WSASYSStatus = 128
Public Type WSAData
wVersion As Integer
wHighVersion As Integer
szDescription(0 To MAX_WSADescription) As Byte
szSystemStatus(0 To MAX_WSASYSStatus) As Byte
wMaxSockets As Integer
wMaxUDPDG As Integer
dwVendorInfo As Long
End Type
Type WSADataInfo
wVersion As Integer
wHighVersion As Integer
szDescription As String * WSADESCRIPTION_LEN
szSystemStatus As String * WSASYS_STATUS_LEN
iMaxSockets As Integer
iMaxUdpDg As Integer
lpVendorInfo As String
End Type
Public Type HOSTENT
hName As Long
hAliases As Long
hAddrType As Integer
hLen As Integer
hAddrList As Long
End Type
Declare Function WSAStartupInfo Lib "WSOCK32" Alias "WSAStartup" (ByVal wVersionRequested As Integer, lpWSADATA As WSADataInfo) As Long
Declare Function WSACleanup Lib "WSOCK32" () As Long
Declare Function WSAGetLastError Lib "WSOCK32" () As Long
Declare Function WSAStartup Lib "WSOCK32" (ByVal wVersionRequired As Long, lpWSADATA As WSAData) As Long
Declare Function gethostname Lib "WSOCK32" (ByVal szHost As String, ByVal dwHostLen As Long) As Long
Declare Function gethostbyname Lib "WSOCK32" (ByVal szHost As String) As Long
Declare Sub CopyMemoryIP Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)

'获取本地IP地址
Public Function GetIPAddress() As String
Dim sHostName As String * 256
Dim lpHost As Long
Dim HOST As HOSTENT
Dim dwIPAddr As Long
Dim tmpIPAddr() As Byte
Dim I As Integer
Dim sIPAddr As String
If Not SocketsInitialize() Then
GetIPAddress = ""
Exit Function
End If
If gethostname(sHostName, 256) = SOCKET_ERROR Then
GetIPAddress = ""
MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & " has occurred. Unable to successfully get Host Name."
SocketsCleanup
Exit Function
End If
sHostName = Trim$(sHostName)
lpHost = gethostbyname(sHostName)
If lpHost = 0 Then
GetIPAddress = ""
MsgBox "Windows Sockets are not responding. " & "Unable to successfully get Host Name."
SocketsCleanup
Exit Function
End If
CopyMemoryIP HOST, lpHost, Len(HOST)
CopyMemoryIP dwIPAddr, HOST.hAddrList, 4
ReDim tmpIPAddr(1 To HOST.hLen)
CopyMemoryIP tmpIPAddr(1), dwIPAddr, HOST.hLen
For I = 1 To HOST.hLen
sIPAddr = sIPAddr & tmpIPAddr(I) & "."
Next
GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)
SocketsCleanup
End Function
Public Function GetIPHostName() As String
Dim sHostName As String * 256
If Not SocketsInitialize() Then
GetIPHostName = ""
Exit Function
End If
If gethostname(sHostName, 256) = SOCKET_ERROR Then
GetIPHostName = ""
MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & " has occurred. Unable to successfully get Host Name."
SocketsCleanup
Exit Function
End If
GetIPHostName = Left$(sHostName, InStr(sHostName, Chr(0)) - 1)
SocketsCleanup
End Function
Public Function HiByte(ByVal wParam As Integer)
HiByte = wParam \ &H100 And &HFF&
End Function
Public Function LoByte(ByVal wParam As Integer)
LoByte = wParam And &HFF&
End Function
Public Sub SocketsCleanup()
If WSACleanup() ERROR_SUCCESS Then
MsgBox "Socket error occurred in Cleanup."
End If
End Sub
Public Function SocketsInitialize() As Boolean
Dim WSAD As WSAData
Dim sLoByte As String
Dim sHiByte As String
If WSAStartup(WS_VERSION_REQD, WSAD) ERROR_SUCCESS Then
MsgBox "The 32-bit Windows Socket is not responding."
SocketsInitialize = False
Exit Function
End If
If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then
MsgBox "This application requires a minimum of " & CStr(MIN_SOCKETS_REQD) & " supported sockets."
SocketsInitialize = False
Exit Function
End If
If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then
sHiByte = CStr(HiByte(WSAD.wVersion))
sLoByte = CStr(LoByte(WSAD.wVersion))
MsgBox "Sockets version " & sLoByte & "." & sHiByte & " is not supported by 32-bit Windows Sockets."
SocketsInitialize = False
Exit Function
End If

SocketsInitialize = True
End Function

定义以下过程即可获取本机ip地址
Sub GetMyIP()
Dim strComputer As String
Dim objWMI      As Object
Dim colIP       As Object
Dim IP          As Object
Dim I           As Integer

strComputer = "."
Set objWMI = GetObject("winmgmts://" & strComputer & "/root/cimv2")
Set colIP = objWMI.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each IP In colIP
If Not IsNull(IP.IPAddress) Then
For I = LBound(IP.IPAddress) To UBound(IP.IPAddress)
MsgBox "IP  地址:" & IP.IPAddress(I) & Chr(10) & _
Next
End If
Next
End Sub




VB中文件操作的两种方式
Line Input:以行为单位取得文件内容 以行为单位是指从当前位置开始到下一个换行符为止的内容 换行符是Chr( ) & Chr( )两个字节组成 VB中已定义了常量vbCrLf 可直接使用 要注意的是Line Input读取一行时会把行尾的换行符去掉 因此我们在读取每行内容时要记得补上换行符才能保持得到的内容与文件一...

在VB中,如何获取鼠标所在的点处的控件句柄
取得句柄在窗体标题处显示

在VB中如何使用BAT文件
set x = Createobject("Wscript.shell")x.run ("cmd \/c c:\\aa.bat")上面这个可以运行BAT文件,如果想要隐藏CMD窗口的话在后面加上,vbhide也就是 set x = Createobject("Wscript.shell")x.run ("cmd \/c c:\\aa.bat"),vbhide

如何编写高质量的VB代码
在VB中,通过使用.来实现对象的引用。例如:Form1.Text1.Text在上面的例子中,程序引用了两个对象:Form1和Text1。利用这种方法引用效率很低。但遗憾的是,没有办法可以避免它。程序员唯一可以做就是使用With或者将用另一个对象保存子对象(Text1)。注释: 使用WithWith frmMain.Text1.Text = "Learn VB".Alignment ...

如何在VB6.0里使用MSFlexGrid将Access中的数据导进来
向工程添加部件:microsoft hierarchical flexgrid control 然后用下面的代码同样能达到要求:Set Conn = CreateObject("ADODB.Connection")Set Reco = CreateObject("ADODB.Recordset")Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\\db1.mdb"Reco.CursorLocation = ...

请问VB中怎样在自身添加网页?用何控件,请给出例子!
这样解决:1、在控件里面添加WebBrowser控件(控件列表中它叫Microsoft Internet Controls)2、在窗体中合适的位置放上控件,设置名字如webs1 3、在合适位置添加代码webs1.Navigate2 "http:\/\/www.baidu.com"

vb 中, sub main如何理解?
submain在模块中定义,如果一个程序包含多个模块,则只允许一个子主过程。子主过程可以包含几个语句。但与其他语言的主程序不同,它不会自动跟踪程序何时启动。可以指定程序从哪个窗体或子窗体开始。子过程,也称为子过程,是响应事件而执行的代码块,或事件过程为执行某些功能而调用的通用代码块。子过程...

VB程序高手何在
程序运行后,单击按钮在窗体上显示的是( C)。A. 5 3 1 B. 7 5 3 C. 9 7 5 D. 11 9 7 7. 下列程序:Option Base 1 Private Sub Command1_Click()Dim x(10)Dim i As Integer For i = 1 To 10 x(i) = 10 - i + i Mod 2 Next For i = 10 To 1 Step -2 Print ...

vb中的程序难题,拜求高手帮忙解决!
笔者在软件开发工作中,对VB的自动化功能和Excel的宏功能进行了一定的研究,实现了VB与Excel的有机结合。现提出来与大家探讨。 一、VB读写Excel表 VB本身的自动化功能可以读写Excel表,其方法如下: 1、在工程中引用Microsoft Excel类型库: 从“工程”菜单中选择“引用”栏;选择Microsoft Excel 9.0 Object Library (...

VB是何意思?有何用?
VISUAL BASIC的缩写 一种编程软件

大武口区17137824475: vb中如何获取本机ip地址
冶邱节宗: 定义以下过程即可获取本机ip地址 Sub GetMyIP() Dim strComputer As String Dim objWMI As Object Dim colIP As Object Dim IP As Object Dim I As Integer strComputer = "." Set objWMI = GetObject("winmgmts://" & strComputer & "/root/...

大武口区17137824475: 有谁知道在vb中怎样能得到本机的ip地址 -
冶邱节宗: 最直观的方法,添加一个winsock,然后MeIp=winsock.LocalIP

大武口区17137824475: 用VB怎样得到本机IP地址 -
冶邱节宗: Option Explicit Private Sub Command1_Click() Text1.Text = Winsock1.LocalIP Text2.Text = Winsock1.LocalHostName Winsock1.Close End Sub

大武口区17137824475: 如何用vb实现读取本地计算机的IP地址?? -
冶邱节宗: 加载控件Microsoft Winsock Control 6.0 添加都窗体,在Form_Load()过程中: Private Sub Form_Load() msgbox "本地IP:" & Winsock1.LocalIP End Sub

大武口区17137824475: 怎么用vb提取本机ip
冶邱节宗: 用winsock控件,选择“工程”--“部件”命令,打开“部件”对话框,在此选择“Microsoft Winsock Control6.0”复选框,单击确定添加到工具箱 把它画在窗体上. 画一个文本框text1 private sub form_load()text1.text=winsock1.localip end sub

大武口区17137824475: 用VB获取IP -
冶邱节宗: vb6.0控件:winsock1 控件. statusbar1.panels(4).text = "本机ip:" & winsock1.localip

大武口区17137824475: 在VB中怎样显示本机的IP地址? -
冶邱节宗: 添加个Winsock1控件 Private Sub Command1_Click() Text1.Text = Winsock1.LocalIP End Sub

大武口区17137824475: 如何用VB通过API函数获取本机IP -
冶邱节宗: 这是获得本地IP的方法,要在窗口加入 Winsock1控件 Private Sub Form_Load()Text1.Text = Winsock1.LocalIPEnd Sub

大武口区17137824475: VB怎么实现显示本机IP? -
冶邱节宗: Private Sub Command1_Click()ip_gw = Inet1.OpenURL("http://www.ip138.com")ip_gw = Mid$(ip_gw, InStr(ip_gw, "您的IP地址是"), 22)ip_gw = Replace(ip_gw, "您...

大武口区17137824475: 求一个VB程序,获取本机IP地址并显示 -
冶邱节宗: '加一个 command--------------------------------- Option Explicit Private Sub GetMyIP() Dim strComputer As String Dim objWMI As Object Dim colIP As Object Dim IP As Object Dim I As Integer strComputer = "." Set objWMI = GetObject("winmgmts:/...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网