NetInfoDlg.pas
上传用户:hbtcygglw
上传日期:2007-01-07
资源大小:281k
文件大小:3k
源码类别:

其他

开发平台:

Delphi

  1. unit NetInfoDlg;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls,nb30, Menus;
  6. type
  7.   TNetBiosInfoDlg = class(TForm)
  8.     Label1: TLabel;
  9.     edHostAddr: TEdit;
  10.     GroupBox1: TGroupBox;
  11.     btnExecute: TButton;
  12.     InfoList: TListBox;
  13.     InfoMenu: TPopupMenu;
  14.     mSave: TMenuItem;
  15.     mClear: TMenuItem;
  16.     btnClose: TButton;
  17.     SaveDlg: TSaveDialog;
  18.     procedure btnExecuteClick(Sender: TObject);
  19.     procedure mClearClick(Sender: TObject);
  20.     procedure mSaveClick(Sender: TObject);
  21.   private
  22.     { Private declarations }
  23.   public
  24.     { Public declarations }
  25.     class procedure Execute(ip:string);
  26.   end;
  27. implementation
  28. {$R *.DFM}
  29. uses NetBEUI,info;
  30. { TNetBiosInfoDlg }
  31. class procedure TNetBiosInfoDlg.Execute(ip: string);
  32. begin
  33. with TNetBiosInfoDlg.Create(Application) do
  34.     begin
  35.     edHostAddr.Text:=ip;
  36.     ShowModal;
  37.     Free;
  38.     end;
  39. end;
  40. procedure TNetBiosInfoDlg.btnExecuteClick(Sender: TObject);
  41. var
  42. inf:TNetBEUI;
  43. list:TList;
  44. i:Integer;
  45. p:PNameBuffer;
  46. n,t,s:string;
  47. begin
  48. InfoList.Clear;
  49. inf:=TNetBEUI.Create(self);
  50. if(inf.GetNetBiosStatus(edHostAddr.Text))then
  51.     begin
  52.     InfoList.Items.Add('目标 主机 名:'+inf.GetRemoteHostName);
  53.     InfoList.Items.Add('目标网卡地址:'+inf.GetMACAddr);
  54.     case Inf.GetAdapterType of
  55.         DIALUP:InfoList.Items.Add('目标上网方式:拨号上网');
  56.         ETHERNET:InfoList.Items.Add('目标上网方式:局域网接入');
  57.         else InfoList.Items.Add('目标上网方式:未知');
  58.         end;
  59.     InfoList.Items.Add('NetBIOS 名字列表:');
  60.     InfoList.Items.Add('Name                Type   Status');
  61.     InfoList.Items.Add('-----------------------------------');
  62.     list:=Inf.GetNetBiosNameList;
  63.     for i:=0 to list.Count-1 do
  64.         begin
  65.         p:=PNameBuffer(list.Items[i]);
  66.         //name
  67.         n:=p.name;
  68.         SetLength(n,15);
  69.         n:=n+'<'+IntToHex(Ord(p.name[15]),2)+'>';
  70.         //type
  71.         if((Ord(p.name_flags) and GROUP_NAME)<>0)then t:=' GROUP '
  72.         else t:=' UNIQUE';
  73.         //status
  74.         if((Ord(p.name_flags) and REGISTERING)<>0)then s:=' REGISTERING'
  75.         else if((Ord(p.name_flags) and REGISTERED)<>0)then s:=' REGISTERED'
  76.         else if((Ord(p.name_flags) and DEREGISTERED)<>0)then s:=' DEREGISTERED'
  77.         else if((Ord(p.name_flags) and DUPLICATE)<>0)then s:=' DUPLICATE'
  78.         else if((Ord(p.name_flags) and DUPLICATE_DEREG)<>0)then s:=' DUPLICATE_DEREG';
  79.         InfoList.Items.Add(n+t+s);
  80.         end;
  81.     end
  82. else InfoList.Items.Add('无法连接,目标的NetBEUI没有绑定到拨号适配器的TCP/IP上。');
  83. inf.Destroy;
  84. end;
  85. procedure TNetBiosInfoDlg.mClearClick(Sender: TObject);
  86. begin
  87. InfoList.Clear;
  88. end;
  89. procedure TNetBiosInfoDlg.mSaveClick(Sender: TObject);
  90. begin
  91. if(SaveDlg.Execute)then
  92.     begin
  93.     if(Sender is TMenuItem)then
  94.         (
  95.             (
  96.                 (Sender as TMenuItem).GetParentMenu as TPopupMenu
  97.             ).PopupComponent as TListBox
  98.         ).Items.SaveToFile(SaveDlg.FileName);
  99.     end;
  100. end;
  101. end.