如题,是不是有api函数的?

解决方案 »

  1.   

    use nb30;Var
      NCB : TNCB;
      ADAPTER : TADAPTERSTATUS;
      LANAENUM : TLANAENUM;
      intIdx : Integer;
      result : Char;
      buf : String;
    begin
      Try
        ZeroMemory(@NCB, SizeOf(NCB));
        NCB.ncb_command := Chr(NCBRESET);
        NCB.ncb_lana_num := LANAENUM.lana[0];
        result := NetBios(@NCB);
        If Ord(result)<>0 Then
          exit;
        //获取网卡适配器地址
        ZeroMemory(@NCB, SizeOf(NCB));
        NCB.ncb_command := Chr(NCBASTAT);
        NCB.ncb_lana_num := LANAENUM.lana[0];
        StrPCopy(NCB.ncb_callname, '*');
        NCB.ncb_buffer := @ADAPTER;
        NCB.ncb_length := SizeOf(ADAPTER);
        result := NetBios(@NCB);
        If Ord(result)<>0 Then
          exit;
        buf := '';
        For intIdx := 0 To 5 Do
          buf := buf + InttoHex(Integer(ADAPTER.adapter_address[intIdx]),2)+'-';
        edtMACAddress.Text := copy(buf,0,length(buf)-1);
      Finally
      End;end;
      

  2.   

    For intIdx := 0 To 5 Do运行到这里,提示
    [Error]  For loop control variable must be simple local variable
      

  3.   

    procedure TfrmMain.btnRunClick(Sender: TObject);
    begin
      memResult.lines.add('您的第'+edtAdapterNum.text+'个适配器的MAC地址为'+NBGetAdapterAddress(StrtoInt(edtAdapterNum.Text)));
    end;
    function TfrmMain.NBGetAdapterAddress(adapterNum: integer): String;
    //adapter00为指定的网卡适配器
    Var
      NCB:TNCB; // NetBios控制块
      ADAPTER : TADAPTERSTATUS; // 获取网卡状态
      LANAENUM : TLANAENUM; // Netbios lana
      intIdx : Integer; // 临时变量
      cRC : Char; // NetBios返回值
      strTemp : String; // 临时变量Begin
      Result := '';
      Try
        // 清空控制块
        ZeroMemory(@NCB, SizeOf(NCB));
        NCB.ncb_command:=Chr(NCBENUM);
        cRC := NetBios(@NCB);    // 重新设置enum命令
        NCB.ncb_buffer := @LANAENUM;
        NCB.ncb_length := SizeOf(LANAENUM);
        cRC := NetBios(@NCB);
        If Ord(cRC)<>0 Then
          exit;
        // 重新设定网卡
        ZeroMemory(@NCB, SizeOf(NCB));
        NCB.ncb_command := Chr(NCBRESET);
        NCB.ncb_lana_num := LANAENUM.lana[adapterNum];
        cRC := NetBios(@NCB);
        If Ord(cRC)<>0 Then
          exit;
        // 获取网卡地址
        ZeroMemory(@NCB, SizeOf(NCB));
        NCB.ncb_command := Chr(NCBASTAT);
        NCB.ncb_lana_num := LANAENUM.lana[adapterNum];
        StrPCopy(NCB.ncb_callname, '*');
        NCB.ncb_buffer := @ADAPTER;
        NCB.ncb_length := SizeOf(ADAPTER);
        cRC := NetBios(@NCB);
        // 将获得信息转换为字符串
        strTemp := '';
        For intIdx := 0 To 5 Do
          strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[intIdx]),2);
        Result := strTemp;
      Finally
      End;
    end;
      

  4.   

    6楼不负责任的答案,GOUPI&laji,断网情况下,根本不能用,还想蹭分