在VB中如何得到网络中某一台电脑(电脑名)的网卡地址?
ReadyGo!技术成就梦想
网络搜索
efish
2008-2-24 2:47:33
MicrosoftVisualBasic4.0,5.0,6.0
WINDOWS
IPX和NETBIOS接口需要网络地址。该文通过详细的步骤演示了如何通过VB获取网卡地址。
步骤:
1)在VisualBasic生成标准的EXE文件。缺省创建Form1。
2)在Form1中添加一命令按钮,缺省名为Command1。
3)把下列代码放到Form1中说明部分。
OptionExplicit
PrivateConstNCBASTAT=&H33
PrivateConstNCBNAMSZ=16
PrivateConstHEAP_ZERO_MEMORY=&H8
PrivateConstHEAP_GENERATE_EXCEPTIONS=&H4
PrivateConstNCBRESET=&H32
PrivateTypeNCB
ncb_commandAsByte"Integer
ncb_retcodeAsByte"Integer
ncb_lsnAsByte"Integer
ncb_numAsByte"Integer
ncb_bufferAsLong"String
ncb_lengthAsInteger
ncb_callnameAsString*NCBNAMSZ
ncb_nameAsString*NCBNAMSZ
ncb_rtoAsByte"Integer
ncb_stoAsByte"Integer
ncb_postAsLong
ncb_lana_numAsByte"Integer
ncb_cmd_cpltAsByte"Integer
ncb_reserve(9)AsByte"Reserved,mustbe0
ncb_eventAsLong
EndType
PrivateTypeADAPTER_STATUS
adapter_address(5)AsByte"AsString*6
rev_majorAsByte"Integer
reserved0AsByte"Integer
adapter_typeAsByte"Integer
rev_minorAsByte"Integer
durationAsInteger
frmr_recvAsInteger
frmr_xmitAsInteger
iframe_recv_errAsInteger
xmit_abortsAsInteger
xmit_successAsLong
recv_successAsLong
iframe_xmit_errAsInteger
recv_buff_unavailAsInteger
t1_timeoutsAsInteger
ti_timeoutsAsInteger
Reserved1AsLong
free_ncbsAsInteger
max_cfg_ncbsAsInteger
max_ncbsAsInteger
xmit_buf_unavailAsInteger
max_dgram_sizeAsInteger
pending_sessAsInteger
max_cfg_sessAsInteger
max_sessAsInteger
max_sess_pkt_sizeAsInteger
name_countAsInteger
EndType
PrivateTypeNAME_BUFFER
nameAsString*NCBNAMSZ
name_numAsInteger
name_flagsAsInteger
EndType
PrivateTypeASTAT
adaptAsADAPTER_STATUS
NameBuff(30)AsNAME_BUFFER
EndType
PrivateDeclareFunctionNetbiosLib"netapi32.dll"(pncbAsNCB)AsByte
PrivateDeclareSubCopyMemoryLib"kernel32"Alias"RtlMoveMemory"(hpvDestAsAny,ByValhpvSourceAsLong,ByValcbCopyAsLong)
PrivateDeclareFunctionGetProcessHeapLib"kernel32"()AsLong
PrivateDeclareFunctionHeapAllocLib"kernel32"(ByValhHeapAsLong,ByValdwFlagsAsLong,ByValdwBytesAsLong)AsLong
PrivateDeclareFunctionHeapFreeLib"kernel32"(ByValhHeapAsLong,ByValdwFlagsAsLong,lpMemAsAny)AsLong
把下面的代码放入Command1_Click的事件中:
PrivateSubCommand1_Click()
DimmyNcbAsNCB
DimbRetAsByte
myNcb.ncb_command=NCBRESET
bRet=Netbios(myNcb)
myNcb.ncb_command=NCBASTAT
myNcb.ncb_lana_num=0
myNcb.ncb_callname="* "
DimmyASTATAsASTAT,tempASTATAsASTAT
DimpASTATAsLong
myNcb.ncb_length=Len(myASTAT)
Debug.PrintErr.LastDllError
pASTAT=HeapAlloc(GetProcessHeap(),HEAP_GENERATE_EXCEPTIONSOrHEAP_ZERO_MEMORY,myNcb.ncb_length)
IfpASTAT=0Then
Debug.Print"memoryallcoationfailed!"
ExitSub
EndIf
myNcb.ncb_buffer=pASTAT
bRet=Netbios(myNcb)
Debug.PrintErr.LastDllError
CopyMemorymyASTAT,myNcb.ncb_buffer,Len(myASTAT)
MsgBoxHex(myASTAT.adapt.adapter_address(0))&""&_
Hex(myASTAT.adapt.adapter_address(1))_
&""&Hex(myASTAT.adapt.adapter_address(2))&""_
&Hex(myASTAT.adapt.adapter_address(3))_
&""&Hex(myASTAT.adapt.adapter_address(4))&""_
&Hex(myASTAT.adapt.adapter_address(5))
HeapFreeGetProcessHeap(),0,pASTAT
EndSub
4)按F5,运行该程序。
5)点击Command1。注意,网卡地址将在一信息框中显示出来。->
WINDOWS
IPX和NETBIOS接口需要网络地址。该文通过详细的步骤演示了如何通过VB获取网卡地址。
步骤:
1)在VisualBasic生成标准的EXE文件。缺省创建Form1。
2)在Form1中添加一命令按钮,缺省名为Command1。
3)把下列代码放到Form1中说明部分。
OptionExplicit
PrivateConstNCBASTAT=&H33
PrivateConstNCBNAMSZ=16
PrivateConstHEAP_ZERO_MEMORY=&H8
PrivateConstHEAP_GENERATE_EXCEPTIONS=&H4
PrivateConstNCBRESET=&H32
PrivateTypeNCB
ncb_commandAsByte"Integer
ncb_retcodeAsByte"Integer
ncb_lsnAsByte"Integer
ncb_numAsByte"Integer
ncb_bufferAsLong"String
ncb_lengthAsInteger
ncb_callnameAsString*NCBNAMSZ
ncb_nameAsString*NCBNAMSZ
ncb_rtoAsByte"Integer
ncb_stoAsByte"Integer
ncb_postAsLong
ncb_lana_numAsByte"Integer
ncb_cmd_cpltAsByte"Integer
ncb_reserve(9)AsByte"Reserved,mustbe0
ncb_eventAsLong
EndType
PrivateTypeADAPTER_STATUS
adapter_address(5)AsByte"AsString*6
rev_majorAsByte"Integer
reserved0AsByte"Integer
adapter_typeAsByte"Integer
rev_minorAsByte"Integer
durationAsInteger
frmr_recvAsInteger
frmr_xmitAsInteger
iframe_recv_errAsInteger
xmit_abortsAsInteger
xmit_successAsLong
recv_successAsLong
iframe_xmit_errAsInteger
recv_buff_unavailAsInteger
t1_timeoutsAsInteger
ti_timeoutsAsInteger
Reserved1AsLong
free_ncbsAsInteger
max_cfg_ncbsAsInteger
max_ncbsAsInteger
xmit_buf_unavailAsInteger
max_dgram_sizeAsInteger
pending_sessAsInteger
max_cfg_sessAsInteger
max_sessAsInteger
max_sess_pkt_sizeAsInteger
name_countAsInteger
EndType
PrivateTypeNAME_BUFFER
nameAsString*NCBNAMSZ
name_numAsInteger
name_flagsAsInteger
EndType
PrivateTypeASTAT
adaptAsADAPTER_STATUS
NameBuff(30)AsNAME_BUFFER
EndType
PrivateDeclareFunctionNetbiosLib"netapi32.dll"(pncbAsNCB)AsByte
PrivateDeclareSubCopyMemoryLib"kernel32"Alias"RtlMoveMemory"(hpvDestAsAny,ByValhpvSourceAsLong,ByValcbCopyAsLong)
PrivateDeclareFunctionGetProcessHeapLib"kernel32"()AsLong
PrivateDeclareFunctionHeapAllocLib"kernel32"(ByValhHeapAsLong,ByValdwFlagsAsLong,ByValdwBytesAsLong)AsLong
PrivateDeclareFunctionHeapFreeLib"kernel32"(ByValhHeapAsLong,ByValdwFlagsAsLong,lpMemAsAny)AsLong
把下面的代码放入Command1_Click的事件中:
PrivateSubCommand1_Click()
DimmyNcbAsNCB
DimbRetAsByte
myNcb.ncb_command=NCBRESET
bRet=Netbios(myNcb)
myNcb.ncb_command=NCBASTAT
myNcb.ncb_lana_num=0
myNcb.ncb_callname="* "
DimmyASTATAsASTAT,tempASTATAsASTAT
DimpASTATAsLong
myNcb.ncb_length=Len(myASTAT)
Debug.PrintErr.LastDllError
pASTAT=HeapAlloc(GetProcessHeap(),HEAP_GENERATE_EXCEPTIONSOrHEAP_ZERO_MEMORY,myNcb.ncb_length)
IfpASTAT=0Then
Debug.Print"memoryallcoationfailed!"
ExitSub
EndIf
myNcb.ncb_buffer=pASTAT
bRet=Netbios(myNcb)
Debug.PrintErr.LastDllError
CopyMemorymyASTAT,myNcb.ncb_buffer,Len(myASTAT)
MsgBoxHex(myASTAT.adapt.adapter_address(0))&""&_
Hex(myASTAT.adapt.adapter_address(1))_
&""&Hex(myASTAT.adapt.adapter_address(2))&""_
&Hex(myASTAT.adapt.adapter_address(3))_
&""&Hex(myASTAT.adapt.adapter_address(4))&""_
&Hex(myASTAT.adapt.adapter_address(5))
HeapFreeGetProcessHeap(),0,pASTAT
EndSub
4)按F5,运行该程序。
5)点击Command1。注意,网卡地址将在一信息框中显示出来。->
-
相关文章
VB邮件检查程序(二)
VB邮件检查程序(二)
VB邮件检查程序(一)
VB邮件检查程序(一)
PING一个IP地址(向它发送一个数据包并等待回应))
PING一个IP地址(向它发送一个数据包并等待回应))
用VB编写标准CGI程序(上)
用VB编写标准CGI程序(上)
用VB编写异步多线程下载程序
用VB编写异步多线程下载程序
跟我学做记事本
跟我学做记事本
制作带有动画和声音的屏幕保护程序
制作带有动画和声音的屏幕保护程序
基于Win95的VB5串口通信程序
基于Win95的VB5串口通信程序
用VisualBasic5.0设计E-mail程序(MAPI)
用VisualBasic5.0设计E-mail程序(MAPI)
VB从零开始编外挂(九)
VB从零开始编外挂(九)
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn
