[وصف الوظيفة] تتطلب واجهات ipX وNETBIOS عناوين الشبكة. توضح هذه المقالة كيفية الحصول على عنوان بطاقة الشبكة من خلال VB من خلال الخطوات التفصيلية.
خطوة:
1) إنشاء ملفات EXE القياسية في VisualBasic. يتم إنشاء Form1 بشكل افتراضي.
2) إضافة زر أمر في Form1، الاسم الافتراضي هو Command1.
3) ضع الكود التالي في جزء الوصف من النموذج 1.
خيار صريح
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'محجوز، يجب أن يكون0
ncb_eventAsLong
نوع النهاية
نوع خاصADAPTER_STATUS
محول_عنوان(5)AsByte'AsString*6
rev_majorAsByte'Integer
محجوز0AsByte'Integer
محول_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
محفوظة1AsLong
free_ncbsAsInteger
max_cfg_ncbsAsInteger
max_ncbsAsInteger
xmit_buf_unavailAsInteger
max_dgram_sizeAsInteger
hanging_sessAsInteger
max_cfg_sessAsInteger
max_sessAsInteger
max_sess_pkt_sizeAsInteger
name_countAsInteger
نوع النهاية
النوع الخاصNAME_BUFFER
nameAsString*NCBNAMSZ
name_numAsInteger
name_flagsAsInteger
نوع النهاية
PrivateTypeASTAT
AdapterAsADAPTER_STATUS
NameBuff(30)AsNAME_BUFFER
نوع النهاية
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=0ثم
تصحيح الأخطاء. طباعة "فشل كل طلاء الذاكرة!"
ExitSub
EndIf
myNcb.ncb_buffer=pASTAT
bRet=NetBIOS(myNcb)
Debug.PrintErr.LastDllError
CopyMemorymyASTAT، myNcb.ncb_buffer، لين (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))&""_
&ست عشري(myASTAT.adapt.adapter_address(5))
HeapFreeGetProcessHeap(),0,pASTAT
EndSub
4) اضغط F5 لتشغيل البرنامج.
5) انقر فوق Command1. لاحظ أنه سيتم عرض عنوان بطاقة الشبكة في مربع المعلومات. ->