通过VisualBasic获取网卡地址

付园123

付园123

2016-02-19 18:54

下面图老师小编跟大家分享通过VisualBasic获取网卡地址,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~
[功能描述]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。注意,网卡地址将在一信息框中显示出来。->

展开更多 50%)
分享

猜你喜欢

通过VisualBasic获取网卡地址

编程语言 网络编程
通过VisualBasic获取网卡地址

如何通过VB获取网卡地址

编程语言 网络编程
如何通过VB获取网卡地址

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

java中通过网卡名称获取IP地址

编程语言 网络编程
java中通过网卡名称获取IP地址

Windows 8系统有线网卡自动获取IP地址

windows系统
Windows 8系统有线网卡自动获取IP地址

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Windows7有线网卡自动获取IP地址设置

电脑网络
Windows7有线网卡自动获取IP地址设置

Javascript获取地址参数

Web开发
Javascript获取地址参数

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

表单配置视窗和解析度

表单配置视窗和解析度

Too much is lost in the language 满城谎言

Too much is lost in the language 满城谎言
下拉加载更多内容 ↓