当前位置: 行情首页 >> 技术文章 >> 技术文章 >> 请问读网卡号的函数 Delphi

  • 请问读网卡号的函数 Delphi / VCL组件开发及应用
  • 2007-10-18 15:40:32 杭州电脑数码城 转载来源:csdn.net
  • 社区 - Delphi / VCL组件开发及应用

    请问读网卡号的函数

    ccc (ccc) 2000-02-01 16:23:00在 Delphi / VCL组件开发及应用 提问


    问题点数:0、回复次数:7

    1楼 jiangtao (蒋涛) 回复于 2000-02-01 16:42:00 得分 0


    Question :
    How can I get network card unique ID ?

    Answer :
    function _SysGetNICAddress: string;
    var
    Tmp : TGUID;
    tmpstr : string;
    newstr : string;
    cnt : integer;
    begin
    try
    CoCreateGuid(Tmp);
    tmpstr := GuidToString(Tmp);
    tmpstr := Copy(tmpstr, Length(tmpstr)-12, 12);
    for cnt := 1 to 5 do
    newstr := newstr + copy(tmpstr, cnt*2-1, 2) + '-';
    newstr := newstr + copy(tmpstr, 11, 2);
    except
    newstr := '';
    end;
    Result := newstr;
    end;


    2楼 () 回复于 2000-02-01 16:44:00 得分 0


    如是指物理号,在我的网子上有篇帖子,有两种方法(radsworld.myrice.com)

    3楼 Kingron (单身走我路……) 回复于 2001-05-14 15:23:00 得分 0


    请搜索“网卡”或者“MAC”即可找到答案。
    附加功能:
    提问

者:如要继续讨论请定期提前贴子,如不想讨论请结束贴子。

4楼 TechnoFantasy ((VB MVP)www.applevb.com) 回复于 2001-05-14 15:44:00 得分 0


Function NBGetAdapterAddress(a:integer) : String;
Implementation



{$R *.DFM}



Procedure TForm1.Button1Click(Sender : TObject);
Begin
label1.Caption:=NBGetAdapterAddress(StrtoInt(Edit1.Text));
End;



Function NBGetAdapterAddress(a:Integer) : String;
Var



NCB : TNCB; // Netbios control block //NetBios控制块
ADAPTER : TADAPTERSTATUS; // Netbios adapter status//取网卡状态
LANAENUM : TLANAENUM; // Netbios lana
intIdx : Integer; // Temporary work value//临时变量
cRC : Char; // Netbios return code//NetBios返回值
strTemp : String; // Temporary string//临时变量



Begin
// Initialize
Result := '';



Try
// Zero control blocl
ZeroMemory(@NCB, SizeOf(NCB));



// Issue enum command
NCB.ncb_command := Chr(NCBENUM);
cRC := NetBios(@NCB);



// Reissue enum command
NCB.ncb_buffer := @LANAENUM;
NCB.ncb_length := SizeOf(LANAENUM);
cRC := NetBios(@NCB);
If Ord(cRC)<>0 Then
exit;



// Reset adapter
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBRESET);
NCB.ncb_lana_num := LANAENUM.lana[a];
cRC := NetBios(@NCB);
If Ord(cRC)<>0 Then
exit;



// Get adapter address
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBASTAT);
NCB.ncb_lana_num := LANAENUM.lana[a];
StrPCopy(NCB.ncb_callname, '*');
NCB.ncb_buffer := @ADAPTER;
NCB.ncb_length := SizeOf(ADAPTER);
cRC := NetBios(@NCB);



// Convert it to string
strTemp := '';
For intIdx := 0 To 5 Do
strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[in
tIdx]),2);
Result := strTemp;
Finally
End;
End;

5楼 lixia01 (云淡风清) 回复于 2001-05-14 15:50:00 得分 0


谢谢楼上兄。

6楼 skt642 () 回复于 2001-05-31 10:31:00 得分 0


21747关注!

竟价广告:

    业界行情新闻声明事项:

    • ☉本网转载出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性!
    • ☉如其他媒体、网站或个人从本网下载使用,必须保留本网注明的“稿件来源”,并自负版权等法律责任。如对稿件内容有疑议,请及时与我们联系.
    • ☉如本网转载稿涉及版权等问题,请作者在速来电或来函与杭州电脑数码城网联系.
    • ☉本站网址:http://www.ititt.com/投诉邮箱:6371222@qq.com