说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何在程序中动态取得Win95/98的网络邻居中的工作组及计算机名?-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
如何在程序中动态取得Win95/98的网络邻居中的工作组及计算机名?-Delphi资料

可参考下面代码,或许有所帮助:

procedure GetDomainList(TV:TTreeView);

var

a : Integer;

ErrCode : Integer;

NetRes : Array[0..1023] of TNetResource;

EnumHandle : THandle;

EnumEntries : DWord;

BufferSize : DWord;

s : string;

itm : TTreeNode;

begin

{ Start here }

try

With NetRes[0] do begin

dwScope :=RESOURCE_GLOBALNET;

dwType :=RESOURCETYPE_ANY;

dwDisplayType :=RESOURCEDISPLAYTYPE_DOMAIN;

dwUsage :=RESOURCEUSAGE_CONTAINER;

lpLocalName :=NIL;

lpRemoteName :=NIL;

lpComment :=NIL;

lpProvider :=NIL;

end;

{ get net root }

ErrCode:=WNetOpenEnum(

RESOURCE_GLOBALNET

RESOURCETYPE_ANY

RESOURCEUSAGE_CONTAINER

@NetRes[0]

EnumHandle

);

If ErrCode=NO_ERROR then begin

EnumEntries:=1;

BufferSize:=SizeOf(NetRes);

ErrCode:=WNetEnumResource(

EnumHandle

EnumEntries

@NetRes[0]

BufferSize

);

WNetCloseEnum(EnumHandle);

ErrCode:=WNetOpenEnum(

RESOURCE_GLOBALNET

RESOURCETYPE_ANY

RESOURCEUSAGE_CONTAINER

@NetRes[0]

EnumHandle

);

EnumEntries:=1024;

BufferSize:=SizeOf(NetRes);

ErrCode:=WNetEnumResource(

EnumHandle

EnumEntries

@NetRes[0]

BufferSize

);

IF ErrCode=No_Error then with TV do try

a:=0;

Items.BeginUpDate;

Items.Clear;

Itm:=Items.Add(TV.Selected

string(NetRes[0].lpProvider));

Itm.ImageIndex:=0;

Itm.SelectedIndex:=0;

{ get domains }

下面的一个单元定义了一个组件. TNetworkBrowser

可以枚举hierachical树上所有

的网络资源. 实际上浏览是要花费很长时间的

这您可以通过在WINDOWS资源管理器

中打开"整个网络" 来比较一下. 如果你设置SCOPE属性 为nsContext

你就可以看到

和网络邻居中一样的机器列表.

unit NetBrwsr;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms

Dialogs;

type

TNetScope = (nsConnected

nsGlobal

nsRemembered

nsContext);

TNetResourceType = (nrAny

nrDisk

nrPrint);

TNetDisplay = (ndDomain

ndGeneric

ndServer

ndShare

ndFile

ndGroup

ndNetwork

ndRoot

ndShareAdmin

ndDirectory

ndTree

ndNDSContainer);

TNetUsage = set of (nuConnectable

nuContainer);

TNetworkItems = class;

TNetworkItem = class

private

FScope: TNetScope;

FResourceType: TNetResourceType;

FDisplay: TNetDisplay;

FUsage: TNetUsage;

FLocalName: string;

FRemoteName: string;

FComment: string;

FProvider: string;

FSubItems: TNetworkItems;

public

constructor Create;

destructor Destroy; override;

property Scope: TNetScope read FScope;

property ResourceType: TNetResourceType read FResourceType;

property Display: TNetDisplay read FDisplay;

property Usage: TNetUsage read FUsage;

property LocalName: string read FLocalName;

property RemoteName: string read FRemoteName;

property Comment: string read FComment;

property Provider: string read FProvider;

property SubItems: TNetworkItems read FSubItems;

end;

TNetworkItems = class

private

FList: TList;

procedure SetItem(Index: Integer; Value: TNetworkItem);

function GetItem(Index: Integer): TNetworkItem;

function GetCount: Integer;

public

constructor Create;

destructor Destroy; override;

procedure Clear;

procedure Add(Item: TNetworkItem);

procedure Delete(Index: Integer);

property Items[Index: Integer]: TNetworkItem read GetItem write

SetItem; default;

property Count: Integer read GetCount;

end;

TNetworkBrowser = class(TComponent)

private

FItems: TNetworkItems;

FScope: TNetScope;

FResourceType: TNetResourceType;

FUsage: TNetUsage;

FActive: Boolean;

procedure Refresh;

procedure SetActive(Value: Boolean);

procedure SetScope(Value: TNetScope);

procedure SetResourceType(Value: TNetResourceType);

procedure SetUsage(Value: TNetUsage);

procedure EnumerateNet(NetItems: TNetworkItems; lpnr: PNetResource);

protected

public

constructor Create(AOwner: TComponent); override;

destructor Destroy; override;

procedure Open;

procedure Close;

property Items: TNetworkItems read FItems;

published

property Scope: TNetScope read FScope write SetScope default nsGlobal;

property ResourceType: TNetResourceType read FResourceType

write SetResourceType default nrAny;

property Usage: TNetUsage read FUsage write SetUsage default [];

property Active: Boolean read FActive write SetActive default False;

end;

implementation

type

PNetResourceArray = ^TNetResourceArray;

TNetResourceArray = array[0..0] of TNetResource;

{ TNetworkItem }

constructor TNetworkItem.Create;

begin

inherited;

FSubItems := TNetworkItems.Create;

end;

destructor TNetworkItem.Destroy;

begin

if FSubItems <> nil then

FSubItems.Free;

inherited;

end;

{ TNetworkItems }

constructor TNetworkItems.Create;

begin

inherited;

FList := TList.Create;

end;

destructor TNetworkItems.Destroy;

begin

Clear;

if FList <> nil then

FList.Free;

inherited;

end;

procedure TNetworkItems.SetItem(Index: Integer; Value: TNetworkItem);

begin

if (FList.Items[Index] <> nil) and (FList.Items[Index] <> Value) then

TNetworkItem(FList.Items[Index]).Free;

FList.Items[Index] := Value;

end;

function TNetworkItems.GetItem(Index: Integer): TNetworkItem;

begin

Result := TNetworkItem(FList.Items[Index]);

end;

procedure TNetworkItems.Clear;

begin

while Count > 0 do

Delete(0);

end;

procedure TNetworkItems.Add(Item: TNetworkItem);

begin

FList.Add(Item);

end;

procedure TNetworkItems.Delete(Index: Integer);

begin

if FList.Items[Index] <> nil then

TNetworkItem(FList.Items[Index]).Free;

FList.Delete(Index);

end;

function TNetworkItems.GetCount: Integer;

begin

if FList <> nil then

Result := FList.Count

else

Result := 0;

end;

{ TNetworkBrowser }

constructor TNetworkBrowser.Create(AOwner: TComponent);

begin

inherited Create(AOwner);

FItems := TNetworkItems.Create;

FScope := nsGlobal;

FResourceType := nrAny;

FUsage := [];

end;

destructor TNetworkBrowser.Destroy;

begin

if FItems <> nil then

FItems.Free;

inherited;

end;

procedure TNetworkBrowser.EnumerateNet(NetItems: TNetworkItems; lpnr:

PNetResource);

var

dwResult

dwResultEnum: Integer;

hEnum: THandle;

cbBuffer

cEntries

i: Integer;

nrArray: PNetResourceArray;

NewItem: TNetworkItem;

dwScope

dwType

dwUsage: Integer;

begin

cbBuffer := 16384;

cEntries := $FFFFFFFF;

case FScope of

nsConnected: dwScope := RESOURCE_CONNECTED;

nsGlobal: dwScope := RESOURCE_GLOBALNET;

nsRemembered: dwScope := RESOURCE_REMEMBERED;

nsContext: dwScope := RESOURCE_CONTEXT;

else

dwScope := RESOURCE_GLOBALNET;

end;

case FResourceType of

nrAny: dwType := RESOURCETYPE_ANY;

nrDisk: dwType := RESOURCETYPE_DISK;

nrPrint: dwType := RESOURCETYPE_PRINT;

else

dwType := RESOURCETYPE_ANY;

end;

dwUsage := 0;

if nuConnectable in FUsage then

dwUsage := dwUsage or RESOURCEUSAGE_CONNECTABLE;

if nuContainer in FUsage then

dwUsage := dwUsage or RESOURCEUSAGE_CONTAINER;

dwResult := WNetOpenEnum(dwScope

dwType

dwUsage

lpnr

hEnum);

if dwResult <> NO_ERROR then Exit;

GetMem(nrArray

cbBuffer);

repeat

dwResultEnum := WNetEnumResource(hEnum

cEntries

nrArray

cbBuffer);

if dwResultEnum = NO_ERROR then

for i := 0 to cEntries-1 do

begin

NewItem := TNetworkItem.Create;

case nrArray[i].dwScope of

RESOURCE_CONNECTED: NewItem.FScope := nsConnected;

RESOURCE_GLOBALNET: NewItem.FScope := nsGlobal;

RESOURCE_REMEMBERED: NewItem.FScope := nsRemembered;

RESOURCE_CONTEXT: NewItem.FScope := nsContext;

else

NewItem.FScope := nsGlobal;

end;

case nrArray[i].dwType of

RESOURCETYPE_ANY: NewItem.FResourceType := nrAny;

RESOURCETYPE_DISK: NewItem.FResourceType := nrDisk;

RESOURCETYPE_PRINT: NewItem.FResourceType := nrPrint;

else

NewItem.FResourceType := nrAny;

end;

case nrArray[i].dwDisplayType of

RESOURCEDISPLAYTYPE_GENERIC: NewItem.FDisplay := ndGeneric;

RESOURCEDISPLAYTYPE_DOMAIN: NewItem.FDisplay := ndDomain;

RESOURCEDISPLAYTYPE_SERVER: NewItem.FDisplay := ndServer;

RESOURCEDISPLAYTYPE_SHARE: NewItem.FDisplay := ndShare;

RESOURCEDISPLAYTYPE_FILE: NewItem.FDisplay := ndFile;

RESOURCEDISPLAYTYPE_GROUP: NewItem.FDisplay := ndGroup;

RESOURCEDISPLAYTYPE_NETWORK: NewItem.FDisplay := ndNetwork;

RESOURCEDISPLAYTYPE_ROOT: NewItem.FDisplay := ndRoot;

RESOURCEDISPLAYTYPE_SHAREADMIN: NewItem.FDisplay :=

ndShareAdmin;

RESOURCEDISPLAYTYPE_DIRECTORY: NewItem.FDisplay :=

ndDirectory;

RESOURCEDISPLAYTYPE_TREE: NewItem.FDisplay := ndTree;

RESOURCEDISPLAYTYPE_NDSCONTAINER: NewItem.FDisplay :=

ndNDSContainer;

else

NewItem.FDisplay := ndGeneric;

end;

NewItem.FUsage := [];

if nrArray[i].dwUsage and RESOURCEUSAGE_CONNECTABLE <> 0 then

Include(NewItem.FUsage

nuConnectable);

if nrArray[i].dwUsage and RESOURCEUSAGE_CONTAINER <> 0 then

Include(NewItem.FUsage

nuContainer);

NewItem.FLocalName := StrPas(nrArray[i].lpLocalName);

NewItem.FRemoteName := StrPas(nrArray[i].lpRemoteName);

NewItem.FComment := StrPas(nrArray[i].lpComment);

NewItem.FProvider := StrPas(nrArray[i].lpProvider);

NetItems.Add(NewItem);

// if container

call recursively

if (nuContainer in NewItem.FUsage) and (FScope <> nsContext) then

EnumerateNet(NewItem.FSubItems

@nrArray[i])

end;

until dwResultEnum = ERROR_NO_MORE_ITEMS;

FreeMem(nrArray);

WNetCloseEnum(hEnum);

end;

procedure TNetworkBrowser.Refresh;

begin

FItems.Clear;

if FActive then

EnumerateNet(FItems

nil);

end;

procedure TNetworkBrowser.SetActive(Value: Boolean);

begin

if Value <> FActive then

begin

FActive := Value;

Refresh;

end;

end;

procedure TNetworkBrowser.SetScope(Value: TNetScope);

begin

if Value <> FScope then

begin

FScope := Value;

Refresh;

end;

end;

procedure TNetworkBrowser.SetResourceType(Value: TNetResourceType);

begin

if Value <> FResourceType then

begin

FResourceType := Value;

Refresh;

end;

end;

procedure TNetworkBrowser.SetUsage(Value: TNetUsage);

begin

if Value <> FUsage then

begin

FUsage := Value;

Refresh;

end;

end;

procedure TNetworkBrowser.Open;

begin

Active := True;

end;

procedure TNetworkBrowser.Close;

begin

Active := False;

end;

end.

API管理的五大规则 Google也节能:挖角美能源部Arun Majumdar博士 预测:云计算领域的5大变革 CTO俱乐部:移动信息化的创新实践及互联网创业 核心组图曝光:BlackBerry 10明年1月30日发布 “蛐蛐儿”创始人朱连兴:音频二维码的技术实现和应用场景 信恩科技创始人林兴陆:QR Code二维码的前世今生 2012移动开发工具盘点:傻瓜式游戏工具引擎 《福布斯》发布年度“未来之星” 扎克伯格上榜 Cloudera透露Impala发行版新功能及开源计划 Nokia落寞身影下 三星成为全球最大手机厂商 乐视网CTO:智能电视,一个诱人的议题 SeatGeek:Web设计师如何转型iOS开发? IE10支持HTML5标准拖放 IBM IT实践达人赛24强出炉 决赛圈比拼创新实践力 [简讯] Perl迎来25岁生日 软件开发者最重要的四大技能 为什么说惠普、戴尔和IBM在互联网发展中站错队 升级iOS 6还得看Google Maps 2012移动开发工具盘点:16大跨平台游戏引擎 GitHub Web游戏开发竞赛 获奖榜单出炉 Dart里程碑2发布 大幅提升dart2js性能 To Facebook:HTML5不好用?是你不会用! AWS推快照备份服务抵御宕机风险 靠谱吗? 微软品鉴会秀Windows 8电脑 上百款新设备年末上市 甩开外包,雄踞榜首:揭开“宫爆老奶奶”成功的秘密 IBM收购大数据公司StoredIQ 推动大数据传输能力 令人意外:前Windows部门总裁将去哈佛教书 舒迅:产品经理必读的九步法 独家爆料:Facebook移动客户端开发揭秘 一个独立开发者的自白:我如何在一年赚得60万美元 很幼稚的问题...(肯定给分) 看书发现的两个概念性问题,可能很简单,请说的详细一点!多谢帮忙! 用UDL连接数据库的问题???奇怪 哪位老兄有修改网卡mac地址的冬冬? 高分寻找:*.mp3转*.rm的软件。 为什么不能执行?高手请进! Access导入到SQL,可以导入ID字段的吗? 头疼的问题!!!!!!!! 还记得那首老歌吗? 如何获得窗口任意位置的被选文本 先有编译器还是先有语言? 怎样使StringGrid中的某一列不可见? 如何遍历select下拉菜单中的内容,并显示在另一个select菜单中?(在线等待) 请高手指教:怎么创建动态链接库,怎么用动态链接库,我是一个初学者,唯有的50分全送出去请教此问题 有谁能帮我?我用OpenDialog找开数据库文件,只能打开一次。再次打开或打开另一个数据库文件,就会地址出错,why? 转让书刊 this->GetParent()->ShouWindow(SW_MIN..)最小化以后,却不能点击任务条还原,怎样还原 JBuilder如何产生Make文件? 如何使listbox的两列显示对齐? 如何在自己的主页中添加代码??用来污染IE的,到底是加在哪个位置??//最好写具体些!!! 关于图片存入数据库的问题 请教大量二进制数据在内存中的存放(马上给分) 讨论:有关tomcat的解释顺序的问题. TechnoFantasy 请近来,还有100分哦:) 打印问题 强烈建议在文档中心增加C++ BUILD!!! 对于同一个SOCKET,能否起多个线程同时读、写呢?如何实现? ??!!!有急事相求 谁知道如何在自己的程序中建立象IIS那样的meta-database数据库结构? 怎样在数据库连接关闭后读出数据? 你知道扩展名为img是什么文件吗? 请问如何在Delphi中实现 AutoComplete(自动完成) 的功能?急!急!急! 请教一下在MDI的程序中pmyView->GetParent()->GetParent()->..... 都得到了什么?? 好奇怪的初始化问题。 一个RANDOMACCESSFILE的问题 急急急!!!VB中如何 实现多行删除表中数据???? 有关注册表的问题 ASP中用ADO连接SQL Server2000的连接字符串怎么写? 在画布上怎么实现滚动条 急~~~如何从文件中取值赋给动态数组?~~~~在线等待 到哪里能够下载 BCB6 Update 请问关于REDHAT下关于安装MYSQL 的问题 请问关于REDHAT下关于安装MYSQL 的问题 CreateFolder("name") 问题 name是变量怎么办???? 急!!! 如何做像 http://www.my0807.com/1.gif 的文字。。 请教真正的高手。 如何用TURBOC 2.0编程检测WINDOWS是否已在运行中? VS.NET能专Windows98中安装吗? 如何创建一个imagelist,用CImageList,可以记录24位色的位图 这个关于树的问题我越想越想不通,请手指点指点:) 用winsock控件设置client/server程序时,server端应怎样设置,请各位大虾帮帮小弟!!谢了! iphone5怎么会有这个?我的iphone5上没有这个符号 细菌的芽孢对于细菌的意义 It is()nice day,is not it?Yes.What()fine weather!A.a;a B.the;the c.a;不填 D.the;不填 十分之一加五十分之二加五十分之三加.加五十分之23加五十分之24等于多少?(用简便方法算) 细菌是怎样变成芽孢的?细菌的那一部分变厚 It’s ( )nice day,isn’it?Yes,what( )fine weather!该选那个?A the; the B a; the C \ ;the D the; ﹨ (x+3y-2z)^2等于多少? 芽孢和细菌的区别?芽孢是什么?麻烦各位把知识点说的简单些…… -It is a lovely day ,isnot it?-Yes ,I love _when the weather is like thisA this B that C it D one 220V的电器能否用250V的电器?我有个 电磁炉 吃220V的电的,我那有个多余的插座,二极管 只要摸到 火线就能 亮了,可能超过250V吧,我空调用那个的.我也不知道是多少V的,只知道在 双相下接的 单相 细菌的芽孢是在哪里形成的? 朝鲜这个词的的含义是什么听说是:说法1.晨起之下,宁静的国度.说法2.是朱元璋起的,好像是“朝日鲜明”的意思. 250v电器可以使用220v吗 细胞核中能够被碱性染料染成深色的物质叫做什么啊? 好像韩国朝鲜字 今天的朝鲜对中国有何战略意义? 国有经济的含义 这里有几个韩国或者朝鲜文字我不认识请各位认识的帮我解答一下告诉我怎么读什么意思谢啦 250V的电线插头接到额定电压是220V的电器上 能行不? 谁能告诉我“国有经济、公有经济、私有经济、混合所有制经济、非国有制经济”到底什么意思,他们什么关系不要政治术语,通俗一点啊!因为百度搜索的我也看了, 朝鲜的朝鲜字怎么写 220V~的电饭煲使用250V~的电线可以吗? 什么是国有经济?其地位和作用是什么? 一个平行四边形广告牌的面积是12.2平方米,底是5分之17,高是多少?用方程解, 计算 (x+3y-2z)(x-3y+2z)2 (a+b+c-2)(a+b-c+2) 优化和完善国有经济的发展有何意义 一个平行四边形广告牌的面积是1.25平方米 它的底是16分之15米 高是多少米? 计算:(x-3y-2z)*(x+3y-2z)=? 帮帮忙. 朝鲜顶部气候是什么? 用一块底15分米,高12分米的平行四边形塑料板,做两个和他等底等高de三角形广告牌,每个广告牌面积是多少 计算(X+3Y+2X)(-X-3y-2Z)计算(X+3Y+2X)(-X-3y-2Z)计算(X+3Y+2X)(-X-3y-2Z)计算(X+3Y+2X)(-X-3y-2Z)计算(X+3Y+2X)(-X-3y-2Z)计算(X+3Y+2X)(-X-3y-2Z)计算(X+3Y+2X)(-X-3y-2Z)计算(X+3Y+2X)(-X-3y-2Z)计算(X+3Y+2X)(-X-3y-2Z)计算(X+3Y+2X)(-X-3y-2Z) 气候.我国的河北省和朝鲜和日本的本州岛气候相同,但特征有河大差异,主要表现为?气候.我国的河北省和朝鲜和日本的本州岛气候相同,但这三地的特征有很大的差异,主要表现为__________________ 一块平行四边形的广告牌,周长是196分米,两条边上的高分别是6分米和8分米,怎样求这块广告牌的面积? 南朝鲜国旗什么意思? 日本朝鲜中国气候比较从日本到朝鲜再到中国北京,就是40纬度的气候特征表现为由 到 的过度 有一块底4分米高2.5分米的平行四边形木板做成长方形的的广告牌怎么求周长和面积 插座上写5A-16A 250V是最大功率多少啊? 为什么朝鲜是亚热带气候 一个数除以3佘2,除以4余3,除以5佘4,这个数最小是多少? 多种家电在同一个多用插座上同时开启使用,为什么会使连接插座的电线显著发热? 一个平行四边形的高是底的三倍,高是2.7分米,它的面积是()平方厘米 下列实验中所使用的染色剂和现象正确的是A 利用甲基绿和吡罗红混合染色剂可同时观察线粒体和叶绿体B 利用醋酸洋红和碘液可以分别鉴定蛋白质和淀粉C 利用甲基绿和吡罗红混合染色剂可 如何看待劣币驱逐良币现象 为什么DNA能被碱性染料染色? 一个平行四边形,它的两条底边分别是8厘米和5厘米,平行四边形的一条高是6厘米,面积是()A;48平方厘米B 30平方厘米 C 48平方厘米或30平方厘米 什么是“劣币驱逐良币”效应,说说这种效应是怎样出现的?“ DNA用EB染料染色后为什么能在紫外线下发光? 关于台酚蓝台酚蓝能用于鉴别细胞的活性,活细胞会被染色.我说的是台酚蓝,不是台盼蓝,生物竞赛中的一个选项! 哪中货币制度会出现"劣币驱逐良币"现象? 观察DNA的实验中 常用碱性染色剂都有哪些? 右图中,乙的面积是48平方厘米,正好占平行四边形面积的5分之一,甲的面积是( )平方厘米.现在就需要 (x-3y+2z)(x+3y-2z) 盐酸有利于DNA与染色剂结合?“盐酸有利于DNA与染色剂结合”,为什么不说成“盐酸有利于DNA\RNA与染色剂结合”?既然是有利的,为什么盐酸处理后一定还要漂洗呢? 苔酚蓝染色法的步骤是什么?如题 (x+3y-2z)^2 DNA与RNA的染色剂是什么 ⑶ 一个梯形的上底是6厘米,下底是10厘米,高是0.4分米,它的面积是( )平方厘米.⑷ 一个平行四边形的底注意单位?上下底都是厘米,高是分米。面积是平方厘米 (x-3y+2z)²= 用数学归纳法证明,1+2+3+……+n^2=(n^4+n^2)/2时,则n=k+1时的左端应在n=k时的左端加上…… 台盼蓝染色剂为什么可以区分死去的细胞?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘