重要DELPHI写一个程序
来获取网卡NAC,主版序列号,硬盘序列号
来获取网卡NAC,主版序列号,硬盘序列号
解决方案 »
- 新手急求多线程解决方案。
- 如何判断 一个线程已经执行 完毕?
- 谁用过MCISendCommand这个函数?
- 关于ADODataset的Locate() seek()
- file类型怎么不可以作为参数?怎么办?
- 高分求救!!!!
- 那里有Installshied 的使用方法,急!!!!
- 用ADO组件怎样将图片写入SQL SERVER数据库?
- 求教关于quickreport的问题
- Delphi中有缺省参数吗,怎么处理这些缺省参数?十分火急!一定给分!
- 求教!!!!Delphi中通过ExcelWorkSheet怎样实现拷贝一行?
- 如何获得CD/DVD-RM/CDRW的硬件设备名称,版本号等信息!!!!!!在线等!!!!!!!!!!!!!!!
varNCB: TNCB;Enum: TLanaEnum;I, L, NameLen: Integer;Adapter: ASTAT;MachineName: string;beginResult := -1;Addresses.Clear;MachineName := UpperCase(Machine);if MachineName = '' thenMachineName := '*';NameLen := Length(MachineName);L := NCBNAMSZ - NameLen;if L > 0 thenbeginSetLength(MachineName, NCBNAMSZ);FillChar(MachineName[NameLen + 1], L, ' ');end;FillChar(NCB, SizeOf(NCB), #0);NCB.ncb_command := NCBENUM;NCB.ncb_buffer := Pointer(@Enum);NCB.ncb_length := SizeOf(Enum);if NetBios(@NCB) = NRC_GOODRET thenbeginResult := Enum.Length;for I := 0 to Ord(Enum.Length) - 1 dobeginFillChar(NCB, SizeOf(NCB), #0);NCB.ncb_command := NCBRESET;NCB.ncb_lana_num := Enum.lana[I];if NetBios(@NCB) = NRC_GOODRET thenbeginFillChar(NCB, SizeOf(NCB), #0);NCB.ncb_command := NCBASTAT;NCB.ncb_lana_num := Enum.lana[I];Move(MachineName[1], NCB.ncb_callname, SizeOf(NCB.ncb_callname));NCB.ncb_buffer := PChar(@Adapter);NCB.ncb_length := SizeOf(Adapter);if NetBios(@NCB) = NRC_GOODRET thenAddresses.Add(AdapterToString(Adapter.adapt));end;end;end;end;************************//获取网卡地址,使用netbios 3.0调用 uses nb30.pas shipped with delphi 4.0function _NetCardAddress : String ;varNCB : TNCB ; // Netbios control blockADAPTER : TADAPTERSTATUS ; // Netbios adapter statusLANAENUM : TLANAENUM ; // Netbios lanaintIdx : Integer ; // Temporary work valueCRC : Char ; // Netbios return codestrTemp : String ; // Temporary stringbeginResult := '' ;tryZeroMemory(@NCB,SizeOf(NCB)) ; // Zero control bloclNCB.ncb_command := Chr(NCBENUM) ; // Issue enum commandcRC := NetBios(@NCB) ;if Ord(cRC)>0 then beginresult:=_NBReturnMSG(crc);exit ;end; NCB.ncb_buffer := @LANAENUM ; // Reissue enum commandNCB.ncb_length := SizeOf(LANAENUM);cRC := NetBios(@NCB) ;if Ord(cRC)>0 then beginresult:=_NBReturnMSG(crc);exit ;end;ZeroMemory(@NCB,SizeOf(NCB)) ; // Reset adapterNCB.ncb_command := Chr(NCBRESET) ;NCB.ncb_lana_num := LANAENUM.lana[0] ;cRC := NetBios(@NCB) ;if Ord(cRC)>0 then beginresult:=_NBReturnMSG(crc);exit ;end;ZeroMemory(@NCB,SizeOf(NCB)) ; // Get adapter addressNCB.ncb_command := Chr(NCBASTAT) ;NCB.ncb_lana_num := LANAENUM.lana[0] ;StrPCopy(NCB.ncb_callname,'*') ;NCB.ncb_buffer := @ADAPTER ;NCB.ncb_length := SizeOf(ADAPTER) ;cRC := NetBios(@NCB) ;if Ord(cRC)>0 then beginresult:=_NBReturnMSG(crc);exit ;end; // Convert Netcard address it to stringstrTemp := '' ;for intIdx := 0 to 5 do strTemp := strTemp + _Char2Hex(ADAPTER.adapter_address[intIdx]) ;Result := strTemp ;finallyend ;end ;