请问delphi读网卡的函数?

ccc 2000-02-01 04:26:00
...全文
197 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sadpacific 2000-02-19
  • 打赏
  • 举报
回复
I agree.
wyj2 2000-02-01
  • 打赏
  • 举报
回复
真是高手
kxy 2000-02-01
  • 打赏
  • 举报
回复
看看下面的几个函数是否合适:

//取网卡地址(MAC)列表
procedure NBGetMac(Strings: TStrings);
//取第一个非零的网卡地址
function NBGetFirstMac: String;
//判断指定网卡地址是否存在
function NBIsMacInList(Mac: String): Boolean;

procedure NBGetMac(Strings: TStrings);
function HexBL(by: Byte): String;
begin
Result := Format('%x', [by]);
if Length(Result) < 2 then
Result := '0' + Result;
end;
var
NCB: TNCB;
Adapter: TAdapterStatus;
LanaEnum: TLanaEnum;
I, J: Integer;
Str: String;
begin
Strings.Clear;
ZeroMemory(@NCB,SizeOf(NCB));

NCB.ncb_command := Chr(NCBENUM);
NetBios(@NCB);

NCB.ncb_buffer := @LanaEnum;
NCB.ncb_length := SizeOf(LanaEnum);
NCB.ncb_command := Chr(NCBENUM);
NetBios(@NCB);

for I := 0 to Ord(LanaEnum.length) - 1 do
begin
ZeroMemory(@NCB,SizeOf(NCB));
NCB.ncb_command := Chr(NCBRESET);
NCB.ncb_lana_num := LanaEnum.lana[I];
NetBios(@NCB);

ZeroMemory(@NCB,SizeOf(NCB));
NCB.ncb_command := Chr(NCBASTAT);
NCB.ncb_lana_num := LanaEnum.lana[I];
StrPCopy(NCB.ncb_callname,'*');
NCB.ncb_buffer := @Adapter;
NCB.ncb_length := SizeOf(Adapter);
NetBios(@NCB);

Str := '';
for J := 0 to 5 do
begin
if J > 0 then Str := Str + '-';
Str := Str + HexBL(Byte(Adapter.adapter_address[J]));
end;
Strings.Add(Str);
end;
end;

function NBGetFirstMac: String;
var
Strings: TStringList;
I, J: Integer;
begin
Result := '';
Strings := TStringList.Create;
try
NBGetMac(Strings);
for I := 0 to Strings.Count - 1 do
begin
for J := 1 to Length(Strings.Strings[I]) do
if (Strings.Strings[I][J] <> '0') and
(Strings.Strings[I][J] <> '-') then
begin
Result := Strings.Strings[I];
Break;
end;
if Result <> '' then Break;
end;
finally
Strings.Free;
end;
end;

function NBIsMacInList(Mac: String): Boolean;
var
Strings: TStringList;
I: Integer;
begin
Result := False;
Strings := TStringList.Create;
try
NBGetMac(Strings);
for I := 0 to Strings.Count - 1 do
begin
if Strings.Strings[I] = Mac then
begin
Result := True;
Break;
end;
end;
finally
Strings.Free;
end;
end;


4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧