[기능 설명] 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
개인 유형NCB
ncb_commandAsByte'정수
ncb_retcodeAsByte'정수
ncb_lsnAsByte'정수
ncb_numAsByte'정수
ncb_bufferAsLong'문자열
ncb_lengthAsInteger
ncb_callnameAsString*NCBNAMSZ
ncb_nameAsString*NCBNAMSZ
ncb_rtoAsByte'정수
ncb_stoAsByte'정수
ncb_postAsLong
ncb_lana_numAsByte'정수
ncb_cmd_cpltAsByte'정수
ncb_reserve(9)AsByte'예약됨, mustbe0
ncb_eventAsLong
종료 유형
개인 유형ADAPTER_STATUS
Adapter_address(5)AsByte'AsString*6
rev_majorAsByte'정수
Reserved0AsByte'정수
adapter_typeAsByte'정수
rev_minorAsByte'정수
지속 시간AsInteger
frmr_recvAsInteger
frmr_xmitAsInteger
iframe_recv_errAsInteger
xmit_abortsAsInteger
xmit_successAsLong
recv_successAsLong
iframe_xmit_errAsInteger
recv_buff_unavailAsInteger
t1_timeoutsAsInteger
ti_timeoutsAsInteger
예약된1AsLong
free_ncbsAsInteger
max_cfg_ncbsAsInteger
max_ncbsAsInteger
xmit_buf_unavailAsInteger
max_dgram_sizeAsInteger
보류 중_sessAsInteger
max_cfg_sessAsInteger
max_sessAsInteger
max_sess_pkt_sizeAsInteger
name_countAsInteger
종료 유형
PrivateTypeNAME_BUFFER
nameAsString*NCBNAMSZ
name_numAsInteger
name_flagsAsInteger
종료 유형
개인 유형ASTAT
adapAsADAPTER_STATUS
이름버프(30)AsNAME_BUFFER
종료 유형
PrivateDeclareFunctionNetbiosLib"netapi32.dll"(pncbAsNCB)AsByte
PrivateDeclareSubCopyMemoryLib"kernel32"별칭"RtlMoveMemory"(hpvDestAsAny,ByValhpvSourceAsLong,ByValcbCopyAsLong)
PrivateDeclareFunctionGetProcessHeapLib"kernel32"()AsLong
PrivateDeclareFunctionHeapAllocLib"kernel32"(ByValhHeapAsLong,ByValdwFlagsAsLong,ByValdwBytesAsLong)AsLong
PrivateDeclareFunctionHeapFreeLib"kernel32"(ByValhHeapAsLong,ByValdwFlagsAsLong,lpMemAsAny)AsLong
Command1_Click 이벤트에 다음 코드를 입력합니다.
PrivateSubCommand1_Click()
디미NcbAsNCB
DimbRetAsByte
myNcb.ncb_command=NCBRESET
bRet=넷바이오스(myNcb)
myNcb.ncb_command=NCBASTAT
myNcb.ncb_lana_num=0
myNcb.ncb_callname="* "
DimmyASTATASTAT,tempASTATASTAT
DimpAATAsLong
myNcb.ncb_length=렌(myASTAT)
Debug.PrintErr.LastDllError
pASTAT=HeapAlloc(GetProcessHeap(),HEAP_GENERATE_EXCEPTIONSOrHEAP_ZERO_MEMORY,myNcb.ncb_length)
IfpASTAT=0그러면
Debug.Print "memoryallcoationfailed!"
ExitSub
종료
myNcb.ncb_buffer=pASTAT
bRet=넷바이오스(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을 클릭합니다. 네트워크 카드 주소가 정보 상자에 표시됩니다. ->