📄 动态取得win9598的网络邻居中的信息.htm
字号:
<HTML><HEAD><TITLE>亦多EastDoor</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2919.6307" name=GENERATOR><link rel="stylesheet" href="../eastdoor.css"></HEAD>
<BODY bgColor=#ffffff text=#000066 vLink=#e0e0e0>
<TABLE align=center border=0 borderColorLight=#90 cellPadding=0 cellSpacing=0
width=753>
<TBODY>
<TR align=middle>
<TD width=200 valign="top"><img src="../image/logo.gif" width="200" height="70"></TD>
<TD align=left height=56 vAlign=top width=603 colspan="2">
<div align="right">
<a href="http://202.113.29.120/">
<img src="../image/titlesoft.gif" height="72" border="0" alt="亦多下载中心"></a>
</div>
</TD>
</TR>
</TBODY>
</TABLE>
<div align="center"></div>
<TABLE align=center border=0 cellPadding=0 cellSpacing=1 width=755>
<TBODY>
<TR>
<TD align=middle height=292 vAlign=top width="100%">
<TABLE align=center border=0 cellPadding=0 cellSpacing=1
width="100%" bgcolor="#6699CC">
<TBODY>
<TR align=left bgcolor="#FFFFFF">
<TD colSpan=4 vAlign=top height=2>
<div align="left">
<table width="100%" border=" 0" cellspacing="1">
<tr bgcolor="#C1D6EA">
<td>
<div align="center">-=<font color="#FFFF33">-</font> 编程中心
<font color="#FFFF33">-</font>=-</div>
</td>
</tr>
</table>
</div>
</TD>
</TR>
<TR vAlign=middle bgcolor="#6699CC">
<TD colSpan=4 height="325">
<TABLE border=0 cellSpacing=0 height=100% width="100%" align="center">
<TBODY>
<TR vAlign=top>
<TD width="67%" rowspan="2" bgcolor="#FFFFFF">
<p align="center"><br><font size="3">动态取得Win95/98的网络邻居中的信息</font></p>
如何在程序中动态取得Win95/98的网络邻居中的工作组及计算机名?可参考下面代码,或许有所帮助: <br>
<br>
procedure GetDomainList(TV:TTreeView); <br>
<br>
var <br>
<br>
a : Integer; <br>
<br>
ErrCode : Integer; <br>
<br>
NetRes : Array[0..1023] of TNetResource; <br>
<br>
EnumHandle : THandle; <br>
<br>
EnumEntries : DWord; <br>
<br>
BufferSize : DWord; <br>
<br>
s : string; <br>
<br>
itm : TTreeNode; <br>
<br>
begin <br>
<br>
{ Start here } <br>
<br>
try <br>
<br>
With NetRes[0] do begin <br>
<br>
dwScope :=RESOURCE_GLOBALNET; <br>
<br>
dwType :=RESOURCETYPE_ANY; <br>
<br>
dwDisplayType :=RESOURCEDISPLAYTYPE_DOMAIN; <br>
<br>
dwUsage :=RESOURCEUSAGE_CONTAINER; <br>
<br>
lpLocalName :=NIL; <br>
<br>
lpRemoteName :=NIL; <br>
<br>
lpComment :=NIL; <br>
<br>
lpProvider :=NIL; <br>
<br>
end; <br>
<br>
{ get net root } <br>
<br>
ErrCode:=WNetOpenEnum( <br>
<br>
RESOURCE_GLOBALNET, <br>
<br>
RESOURCETYPE_ANY, <br>
<br>
RESOURCEUSAGE_CONTAINER, <br>
<br>
@NetRes[0], <br>
<br>
EnumHandle <br>
<br>
); <br>
<br>
If ErrCode=NO_ERROR then begin <br>
<br>
EnumEntries:=1; <br>
<br>
BufferSize:=SizeOf(NetRes); <br>
<br>
ErrCode:=WNetEnumResource( <br>
<br>
EnumHandle, <br>
<br>
EnumEntries, <br>
<br>
@NetRes[0], <br>
<br>
BufferSize <br>
<br>
); <br>
<br>
WNetCloseEnum(EnumHandle); <br>
<br>
ErrCode:=WNetOpenEnum( <br>
<br>
RESOURCE_GLOBALNET, <br>
<br>
RESOURCETYPE_ANY, <br>
<br>
RESOURCEUSAGE_CONTAINER, <br>
<br>
@NetRes[0], <br>
<br>
EnumHandle <br>
<br>
); <br>
<br>
EnumEntries:=1024; <br>
<br>
BufferSize:=SizeOf(NetRes); <br>
<br>
ErrCode:=WNetEnumResource( <br>
<br>
EnumHandle, <br>
<br>
EnumEntries, <br>
<br>
@NetRes[0], <br>
<br>
BufferSize <br>
<br>
); <br>
<br>
IF ErrCode=No_Error then with TV do try <br>
<br>
a:=0; <br>
<br>
Items.BeginUpDate; <br>
<br>
Items.Clear; <br>
<br>
Itm:=Items.Add(TV.Selected,string(NetRes[0].lpProvider)); <br>
<br>
Itm.ImageIndex:=0; <br>
<br>
Itm.SelectedIndex:=0; <br>
<br>
{ get domains } <br>
<br>
下面的一个单元定义了一个组件. TNetworkBrowser, 可以枚举hierachical树上所有的网络资源. 实际上浏览是要花费很长时间的,这您可以通过在WINDOWS资源管理器中打开"整个网络"
来比较一下. 如果你设置SCOPE属性 为nsContext , 你就可以看到和网络邻居中一样的机器列表. <br>
<br>
unit NetBrwsr; <br>
<br>
interface <br>
<br>
uses <br>
<br>
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; <br>
<br>
type <br>
<br>
TNetScope = (nsConnected, nsGlobal, nsRemembered, nsContext); <br>
<br>
TNetResourceType = (nrAny, nrDisk, nrPrint); <br>
<br>
TNetDisplay = (ndDomain, ndGeneric, ndServer, ndShare, ndFile, ndGroup, <br>
<br>
ndNetwork, ndRoot, ndShareAdmin, ndDirectory, ndTree, ndNDSContainer); <br>
<br>
TNetUsage = set of (nuConnectable, nuContainer); <br>
<br>
TNetworkItems = class; <br>
<br>
TNetworkItem = class <br>
<br>
private <br>
<br>
FScope: TNetScope; <br>
<br>
FResourceType: TNetResourceType; <br>
<br>
FDisplay: TNetDisplay; <br>
<br>
FUsage: TNetUsage; <br>
<br>
FLocalName: string; <br>
<br>
FRemoteName: string; <br>
<br>
FComment: string; <br>
<br>
FProvider: string; <br>
<br>
FSubItems: TNetworkItems; <br>
<br>
public <br>
<br>
constructor Create; <br>
<br>
destructor Destroy; override; <br>
<br>
property Scope: TNetScope read FScope; <br>
<br>
property ResourceType: TNetResourceType read FResourceType; <br>
<br>
property Display: TNetDisplay read FDisplay; <br>
<br>
property Usage: TNetUsage read FUsage; <br>
<br>
property LocalName: string read FLocalName; <br>
<br>
property RemoteName: string read FRemoteName; <br>
<br>
property Comment: string read FComment; <br>
<br>
property Provider: string read FProvider; <br>
<br>
property SubItems: TNetworkItems read FSubItems; <br>
<br>
end; <br>
<br>
TNetworkItems = class <br>
<br>
private <br>
<br>
FList: TList; <br>
<br>
procedure SetItem(Index: Integer; Value: TNetworkItem); <br>
<br>
function GetItem(Index: Integer): TNetworkItem; <br>
<br>
function GetCount: Integer; <br>
<br>
public <br>
<br>
constructor Create; <br>
<br>
destructor Destroy; override; <br>
<br>
procedure Clear; <br>
<br>
procedure Add(Item: TNetworkItem); <br>
<br>
procedure Delete(Index: Integer); <br>
<br>
property Items[Index: Integer]: TNetworkItem read GetItem write <br>
<br>
SetItem; default; <br>
<br>
property Count: Integer read GetCount; <br>
<br>
end; <br>
<br>
TNetworkBrowser = class(TComponent) <br>
<br>
private <br>
<br>
FItems: TNetworkItems; <br>
<br>
FScope: TNetScope; <br>
<br>
FResourceType: TNetResourceType; <br>
<br>
FUsage: TNetUsage; <br>
<br>
FActive: Boolean; <br>
<br>
procedure Refresh; <br>
<br>
procedure SetActive(Value: Boolean); <br>
<br>
procedure SetScope(Value: TNetScope); <br>
<br>
procedure SetResourceType(Value: TNetResourceType); <br>
<br>
procedure SetUsage(Value: TNetUsage); <br>
<br>
procedure EnumerateNet(NetItems: TNetworkItems; lpnr: PNetResource); <br>
<br>
protected <br>
<br>
public <br>
<br>
constructor Create(AOwner: TComponent); override; <br>
<br>
destructor Destroy; override; <br>
<br>
procedure Open; <br>
<br>
procedure Close; <br>
<br>
property Items: TNetworkItems read FItems; <br>
<br>
published <br>
<br>
property Scope: TNetScope read FScope write SetScope default nsGlobal; <br>
<br>
property ResourceType: TNetResourceType read FResourceType <br>
<br>
write SetResourceType default nrAny; <br>
<br>
property Usage: TNetUsage read FUsage write SetUsage default []; <br>
<br>
property Active: Boolean read FActive write SetActive default False; <br>
<br>
end; <br>
<br>
implementation <br>
<br>
type <br>
<br>
PNetResourceArray = ^TNetResourceArray; <br>
<br>
TNetResourceArray = array[0..0] of TNetResource; <br>
<br>
{ TNetworkItem } <br>
<br>
constructor TNetworkItem.Create; <br>
<br>
begin <br>
<br>
inherited; <br>
<br>
FSubItems := TNetworkItems.Create; <br>
<br>
end; <br>
<br>
destructor TNetworkItem.Destroy; <br>
<br>
begin <br>
<br>
if FSubItems <> nil then <br>
<br>
FSubItems.Free; <br>
<br>
inherited; <br>
<br>
end; <br>
<br>
{ TNetworkItems } <br>
<br>
constructor TNetworkItems.Create; <br>
<br>
begin <br>
<br>
inherited; <br>
<br>
FList := TList.Create; <br>
<br>
end; <br>
<br>
destructor TNetworkItems.Destroy; <br>
<br>
begin <br>
<br>
Clear; <br>
<br>
if FList <> nil then <br>
<br>
FList.Free; <br>
<br>
inherited; <br>
<br>
end; <br>
<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -