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_