Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Таблица NetBIOS-имен удаленных компьютер

01.01.2007
////////////////////////////////////////////////////////////////////////////////
//
//  ****************************************************************************
//  * Unit Name : Unit1
//  * Purpose   : Демо получение информации NETBIOS именах компьютера
//                (аналог nbtstat -a)
//  * Author    : Александр (Rouse_) Багель
//  * Version   : 1.00
//  ****************************************************************************
//
 
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, Nb30, StdCtrls;
 
type
  TNetbiosInfo = record
    AdapterStatus: TAdapterStatus;
    NameBuffer: Array [0..30] of TNameBuffer;
  end;
 
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    procedure GetNetBiosNames(const Addr: String);
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.GetNetBiosNames(const Addr: String);
var
  NCB: TNCB;
  Enum: TLanaEnum;
  NetbiosInfo: TNetbiosInfo;
  I, A: Integer;
  Ends: Byte;
begin
  FillChar(NCB, SizeOf(TNCB), #0);
  NCB.ncb_command := Char(NCBENUM);
  NCB.ncb_buffer := @Enum;
  NCB.ncb_length := SizeOf(TLanaEnum);
  if Netbios(@NCB) = Char(NRC_GOODRET) then
    for I := 0 to Integer(Enum.length) - 1 do
    begin
      FillChar(NCB, SizeOf(TNCB), #0);
      NCB.ncb_lana_num := Enum.lana[I];
      NCB.ncb_command := Char(NCBRESET);
      if Netbios(@NCB) = Char(NRC_GOODRET) then
      begin
        FillChar(NetbiosInfo, SizeOf(TNetbiosInfo), #0);
        NCB.ncb_command := Char(NCBASTAT);
        Move(Addr[1], NCB.ncb_callname[0], Length(Addr));
        NCB.ncb_buffer := @NetbiosInfo;
        NCB.ncb_length := SizeOf(TNetbiosInfo);
        if Netbios(@NCB) = Char(NRC_GOODRET) then
          for A := 0 to NetbiosInfo.AdapterStatus.name_count - 1 do
          begin
            Ends := Byte(NetbiosInfo.NameBuffer[A].name[NCBNAMSZ - 1]);
            NetbiosInfo.NameBuffer[A].name[NCBNAMSZ - 1] := #32;
            Memo1.Lines.Add(Format('%s <%s>',
              [String(NetbiosInfo.NameBuffer[A].name),
                IntToHex(Ends, 2)]));
          end;
      end;
    end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  GetNetBiosNames(Edit1.Text);
end;
 
end.

 
 

Взято из https://forum.sources.ru

Автор: Rouse_