如何取得网上邻居的计算机名称

zhangco 2000-08-13 05:04:00
请问如何取得网上邻居的计算机名称?
...全文
153 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Firing_Sky 2000-08-13
  • 打赏
  • 举报
回复
哇!搞错了,贴出的是Delphi的代码……
不过,它的思想可以搬到VB里面去
1、WNetOpenEnum打开资源枚举
2、然后用WNetEnumResource来逐个的枚举网络资源
具体的用法可以参看这儿Delphi的用法,也可以察看MSDN
Firing_Sky 2000-08-13
  • 打赏
  • 举报
回复
unit netres_main_unit;

interfaceuses
Windows, Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,
ComCtrls, StdCtrls, Buttons, Menus, ExtCtrls;
type TfrmMain = class(TForm)
tvResources: TTreeView;
btnOK: TBitBtn;
btnClose: TBitBtn;
Label1: TLabel;
barBottom: TStatusBar;
popResources: TPopupMenu;
mniExpandAll: TMenuItem;
mniCollapseAll: TMenuItem;
mniSaveToFile: TMenuItem;
mniLoadFromFile: TMenuItem;
grpListType: TRadioGroup;
grpResourceType: TRadioGroup;
dlgOpen: TOpenDialog;
dlgSave: TSaveDialog;
procedure FormCreate(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure mniExpandAllClick(Sender: TObject);
procedure mniCollapseAllClick(Sender: TObject);
procedure mniSaveToFileClick(Sender: TObject);
procedure mniLoadFromFileClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
private
ListType, ResourceType: DWORD;
procedure ShowHint(Sender: TObject);
procedure DoEnumeration;
procedure DoEnumerationContainer(NetResContainer: TNetResource);
procedure AddContainer(NetRes: TNetResource);
procedure AddShare(TopContainerIndex: Integer; NetRes:TNetResource);
procedure AddShareString(TopContainerIndex: Integer; ItemName:String);
procedure AddConnection(NetRes: TNetResource);
public
{ Public declarations }
end;


var
frmMain: TfrmMain;

implementation
{$R *.DFM}
procedure TfrmMain.ShowHint(Sender: TObject);
begin
barBottom.Panels.Items[0].Text:=Application.Hint;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
Application.OnHint:=ShowHint;
barBottom.Panels.Items[0].Text:='';
end;
procedure TfrmMain.btnCloseClick(Sender: TObject);
begin
Close;
end;
{ Enumerate through all network resources:}
procedure TfrmMain.DoEnumeration;
var
NetRes: Array[0..2] of TNetResource;
Loop: Integer;
r, hEnum, EntryCount, NetResLen: DWORD;
begin
case grpListType.ItemIndex of
{ Connected resources: }
1: ListType:=RESOURCE_CONNECTED;
{ Persistent resources: }
2: ListType:=RESOURCE_REMEMBERED;
{ Global: }
else ListType:=RESOURCE_GLOBALNET;
end;
case grpResourceType.ItemIndex of { Disk resources: }
1: ResourceType:=RESOURCETYPE_DISK; { Print resources: }
2: ResourceType:=RESOURCETYPE_PRINT; { All: }
else
ResourceType:=RESOURCETYPE_ANY;
end;
Screen.Cursor:=crHourGlass;
try { Delete any old items in the tree view: }
for Loop:=tvResources.Items.Count-1 downto 0 do
tvResources.Items[Loop].Delete;
except
end; { Start enumeration: }
r:=WNetOpenEnum(ListType,ResourceType,0,nil,hEnum);
if r<>NO_ERROR then
begin
if r=ERROR_EXTENDED_ERROR then
MessageDlg('Unable to Enumerate the Network.'+#13+
'A network-specific error occurred.',mtError,[mbOK],0)
else
MessageDlg('Unable to Enumerate the Network.',mtError,[mbOK],0);
Exit;
end;
try
{ We got a valid enumeration handle; walk the resources: }
while (1=1) do
begin
EntryCount:=1;
NetResLen:=SizeOf(NetRes);
r:=WNetEnumResource(hEnum,EntryCount,@NetRes,NetResLen);
case r of
0: begin { It's a container, iterate it: }
if NetRes[0].dwUsage=RESOURCEUSAGE_CONTAINER then
DoEnumerationContainer(NetRes[0])
else
{ Persistent and connected resources show up here: }
if ListType in [RESOURCE_REMEMBERED,RESOURCE_CONNECTED] then
AddConnection(NetRes[0]);
end; { Done: }
ERROR_NO_MORE_ITEMS: Break; { Other error: }
else
begin
MessageDlg('Error Walking Resources.',mtError,[mbOK],0);
Break;
end;
end;
end;
finally
Screen.Cursor:=crDefault;
{ Close enumeration handle: }
WNetCloseEnum(hEnum);
end;
end;
{ Enumerate through the specified container:
This function is usually recursively called.}
procedure TfrmMain.DoEnumerationContainer(NetResContainer:TNetResource);
var
NetRes: Array[0..10] of TNetResource;
TopContainerIndex: Integer;
r, hEnum, EntryCount, NetResLen: DWORD;
begin
{ Add container name to tree view: } AddContainer(NetResContainer);
{ Keep track of this item as current root: }
TopContainerIndex:=tvResources.Items.Count-1;
{ Start enumeration: }
if ListType=RESOURCE_GLOBALNET then { Enumerating global net: }
r:=WNetOpenEnum(ListType,ResourceType,RESOURCEUSAGE_CONTAINER,
@NetResContainer,hEnum)
else
{ Enumerating connections or persistent (won't normally get here):}
r:=WNetOpenEnum(ListType,ResourceType,RESOURCEUSAGE_CONTAINER,
nil,hEnum);
{ Couldn't enumerate through this container; just make a note
of it and continue on: }
if r<>NO_ERROR then
begin
AddShareString(TopContainerIndex,'<Couldn''t Enumerate Resources(Error #'+
IntToStr(r)+'>');
WNetCloseEnum(hEnum);
Exit;
end;
{ We got a valid enumeration handle; walk the resources: }
while (1=1) do
begin
EntryCount:=1;
NetResLen:=SizeOf(NetRes);
r:=WNetEnumResource(hEnum,EntryCount,@NetRes,NetResLen);
case r of
0: begin
{ Yet another container to enumerate; call this function
recursively to handle it: }
if (NetRes[0].dwUsage=RESOURCEUSAGE_CONTAINER) or
(NetRes[0].dwUsage=10) then DoEnumerationContainer(NetRes[0])
else
case NetRes[0].dwDisplayType of
{ Top level type: } RESOURCEDISPLAYTYPE_GENERIC,
RESOURCEDISPLAYTYPE_DOMAIN,
RESOURCEDISPLAYTYPE_SERVER: AddContainer(NetRes[0]);
{ Share: }
RESOURCEDISPLAYTYPE_SHARE:
AddShare(TopContainerIndex,NetRes[0]);
end;
end;
ERROR_NO_MORE_ITEMS: Break;
else
begin
MessageDlg('Error #'+IntToStr(r)+' WalkingResources.',mtError,[mbOK],0);
Break;
end;
end;
end;
{ Close enumeration handle: }
WNetCloseEnum(hEnum);
end;
procedure TfrmMain.FormShow(Sender: TObject);
begin
DoEnumeration;
end;
{Add item to tree view; indicate that it is a container:}
procedure TfrmMain.AddContainer(NetRes: TNetResource);
var
ItemName: String;
begin
ItemName:=Trim(String(NetRes.lpRemoteName));
if Trim(String(NetRes.lpComment))<>'' then begin
if ItemName<>'' then
ItemName:=ItemName+' ';
ItemName:=ItemName+'('+String(NetRes.lpComment)+')';
end;
tvResources.Items.Add(tvResources.Selected,ItemName);
end;
{ Add child item to container denoted as current top:}
procedure TfrmMain.AddShare(TopContainerIndex: Integer; NetRes:TNetResource);
var
ItemName: String;
begin
ItemName:=Trim(String(NetRes.lpRemoteName));
if Trim(String(NetRes.lpComment))<>'' then
begin
if ItemName<>'' then ItemName:=ItemName+' ';
ItemName:=ItemName+'('+String(NetRes.lpComment)+')';
end;
tvResources.Items.AddChild(tvResources.Items[TopContainerIndex],ItemName);
end;
{Add child item to container denoted as current top;
this just adds a string for purposes such as being unable
to enumerate a container. That is, the container's shares
are not accessible to us.}
procedure TfrmMain.AddShareString(TopContainerIndex: Integer;ItemName: String);
begin
tvResources.Items.AddChild(tvResources.Items[TopContainerIndex],ItemName);
end;
{ Add a connection to the tree view.
Mostly used for persistent and currently connected resources to be displayed.}
procedure TfrmMain.AddConnection(NetRes: TNetResource);
var
ItemName: String;
begin
ItemName:=Trim(String(NetRes.lpLocalName));
if Trim(String(NetRes.lpRemoteName))<>'' then
begin
if ItemName<>'' then ItemName:=ItemName+' ';
ItemName:=ItemName+'-> '+Trim(String(NetRes.lpRemoteName));
end;
tvResources.Items.Add(tvResources.Selected,ItemName);
end;
{ Expand all containers in the tree view:}
procedure TfrmMain.mniExpandAllClick(Sender: TObject);
begin
tvResources.FullExpand;end;
{ Collapse all containers in the tree view:}
procedure TfrmMain.mniCollapseAllClick(Sender: TObject);
begin
tvResources.FullCollapse;
end;
{ Allow saving of tree view to a file:}
procedure TfrmMain.mniSaveToFileClick(Sender: TObject);
begin
if dlgSave.Execute then tvResources.SaveToFile(dlgSave.FileName);
end;
{Allow loading of tree view from a file:}
procedure TfrmMain.mniLoadFromFileClick(Sender: TObject);
begin
if dlgOpen.Execute then tvResources.LoadFromFile(dlgOpen.FileName);end;
{Rebrowse:}
procedure TfrmMain.btnOKClick(Sender: TObject);
begin
DoEnumeration;
end;

end.
本课程是H3CNE精品课程,提供答疑和全套学习资料:内容如下:1、高清录屏截图:2、配套拓扑部分截图:3、全部随堂拓扑:4、课程录屏目录:1、认识H3C设备及安装环境  01 H3C NE课程介绍  02 H3C路由器、交换机的分类  03 安装和设置HCL实验环境  04 搭建HCL实验环境  05 在HCL中保存拓扑  06 连接管理H3C设备  07 H3C设备用户角色2、计算机网络入门基础 v1.0  01 网络基础-Internet的发展  02 常见网络设备及其他  03 网络中常见专业术语第1章 计算机网络概述  01 计算机网络的定义和基本功能  02 计算机网络的演进  03 计算机网络的类型  04 衡量计算机网络的性能指标  05 网络标准化组织第2章 OSI参考模型与TCP IP模型  01 OSI参考模型  02 TCP/IP模型第3章 局域网基本原理  01 局域网概述  02 以太网技术基础  03 现代以太网技术  04 WLAN技术基础第4章 广域网基本原理  01 广域网基本概念  02 点到点广域网技术介绍  03 分组交换广域网技术介绍第5章 IP基本原理   01 IP协议概述  02 实验:TTL值的作用  03 实验:IP头部抓包  04 IP地址和地址映射  05 IP包转发第6章 TCP和UDP基本原理  01 TCP/IP传输层的作用  02 TCP基本原理  03 UDP基本原理  04 H3C配置管理实验第7章 路由器、交换机及其操作系统介绍  01 路由器与交换机的作用与特点  02 H3C路由器与交换机介绍  03 H3C网络设备操作系统Comware第8章 命令行操作基础  01 配置网络设备的方法  02 命令行使用入门  03 常用的命令  04 配置远程登录第9章 网络设备文件管理  01 网络设备的文件系统  02 文件的管理  03 网络设备软件维护基础第10章 网络设备基本调试  01 网络连通性测试  02 系统调试第11章 以太网交换机工作原理  01 共享式与交换式以太网  02 交换机的MAC地址表学习过程  03 交换机对数据帧的过滤与转发  04 广播域第12章+配置VLAN  01 VLAN技术简介  02 VLAN类型  03 VLAN技术原理  04 VLAN的基本配置第13章+生成树协议  01 生成树背景  02 STP  03 RSTP  04 MSTP  05 生成树协议的配置第14章+交换机端口安全技术  01 802.1X基本原理及其配置  02 端口隔离技术及其配置  03 端口绑定技术及其配置第15章+配置链路聚合  01 链路聚合简介  02 链路聚合的分类  03 链路聚合的基本配置第16章+IP子网划分  01 子网划分的需求  02 IP子网划分基础知识  03 IP子网划分相关计算  04 VLSM和CIDR第17章+DNS  01 DNS的基本原理  02 华三设备DNS配置第18章+文件传输协议    01 文件传输协议原理  02 文件传输协议配置第19章+DHCP  01 DHCP基本原理  02 DHCP中继原理及配置  03 DHCP配置命令第20章+IPv6基础  01 IPv6特点  02 IPv6地址  03 邻居发现协议  04 IPv6地址配置第21章+IP路由原理  01 IP路由原理基础  02 环路的形成和防止  03 查看设备路由表第22章+直连路由和静态路由  01 直连路由  02 单臂路由实验配置  03 三层交换实验  04 静态路由及配置第23章+路由协议概述  01 路由协议与可路由协议  02 衡量路由协议的主要指标  第24章+RIP原理及配置  01 RIP基本原理  02 RIP实验配置第25章+用访问控制列表实现包过滤  01 ACL概述  02 ACL包过滤原理  03 ACL分类  04 配置ACL包过滤  05 ACL包过滤的注意事项注意:课程不定时更新,提供答疑和全部学习资料。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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