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

在程序中动态取得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;

王寒:12岁儿童,该怎样开始iOS开发? 陈昊芝:腾讯!让我说你什么好? Top Paid与Top Grossing定价策略的差异 Android版百度云推送正式发布 为何开发者应推动公司开源? 从AppGratis被下架说起,苹果或将再次付出代价 58同城的“烦恼”——8K月薪安全工程师引发的入侵 软件开发实践的24条军规 思科 IBM 微软等巨头联合开发开源SDN项目OpenDaylight 巾帼不让须眉:2012年度云计算领域Top 10女性 中移动全力推进NFC 5月起乘公交可刷手机 支持Android与iOS,Qt 5.1 Alpha全新亮相 Google Play:劣质Android应用已无藏身之地! 360推出信用网站认证开放平台 联合百家协会围剿钓鱼网站 经验分享:百度测试架构师眼中的百度QA(一) 在线旅行服务行业开放API带来的新机遇 专访:悬疑恐怖游戏Year Walk美术及音效设计师 解密:微软都柏林数据中心的神秘“免费冷却”装置 云计算如何影响数字化营销? 榜单:十位帮我们打理数据的存储大佬 OpenStack Grizzly版发布 Comcast、CERN成为新会员 谷歌携Blink来势汹汹 WebKit将成明日黄花? 星巴克与苹果合作 顾客可免费下载付费App 微信回应信令争议 将启动2.5G网络优化计划 凤凰网CTO吴华鹏离职 先后供职长达10年 外媒:开发者每周编码时间仅19.1小时 AppGratis CEO现身说法:应用被苹果儆杀始末 一个Web设计师眼里的云计算 戴尔高管:服务器业务领先惠普五年时间 Hoodie:基于JS与CouchDB的超快速Web开发框架 设计优秀API的五大规则 关于FTP站点下载得问题。。。 STL中有没有左高树?或者菲薄那契堆? 目前,主流的B/S结构的数据库前端开发工具是什么?哪个最有前途? 给我个喜欢VC放JAVA的理由先! 如何解决两个tabpage互换时,tabpage上的控件因检索大量数据而闪烁。 有关dll在设备驱动中的问题。急,在线等待。多谢多谢!! 一个字符串常量"aaa=",一个字符串指针char *m_buffer="bbb",怎样相加得到"aaa=bbb".谢谢! 54beginner java文本框的问题 谁有Dream控件的原码(200分酬谢) 在php+mysql中能不能把数据库文件放到别的目录下! 急 求援!有谁在看<<c++大学教程(第二版)>>电子工业出版社,一道题难住了. 这是为什么???? delphi程序最小化后如何常驻内存执行(在屏幕右下角)? 用sql语句怎样创建自动编号的字段 关于外键???有人说在数据库应用中不应该使用外键,请大家说明自己的观点!! DataEnvironment如何设置相对路径的数据库 在VC中如何利用VFP的GRID控件 问高手,加密过的asp代码,用什么工具可以解码,为什么我这个工具不能用 url.openStream,从主机读取资源的疑问???? 关于外键???有人说在数据库应用中不应该使用外键,请大家说明自己的观点!! 急救,请问 TClientDataSet 的 RefreshRecord如何使用,它起的是什么作用? 窗体的大小不能改变,应怎样设置? 调查:大家说说,自己这辈子打心眼里最对不起的一个人是谁???? 关于WIN2000双启动的问题 请问怎样才能取得指针所在行的行号? 给我足够学习java的理由先! 如何屏蔽ctrl+alt+delete??? 错误的ASP:0107堆栈溢出,处理中的数据超过允许的极限!? 菜鸟的 弱问题 50分送上 相信很多人和我一样对下面的问题都非常感兴趣。。。 可否做出 有没有高手知道如何修改?用户dbo的login name为空,要改为sa如何做? 关于调色板的问题,多谢 谁知道哪有vs.C#编程百例一书中的百例download!多谢了! 要写就写爽,再来一首词 关于ado.net数据的问题 我想在输入密码时不要显示***,直接显示数据,该如何设置? 单文档多视:为何切换后视和客户区不一样大?最大化也不响应? 请问哪儿有 stl&gp 下载? 各位老大救救我 TMenu和TTreeView的紧密协作实现安全权限的设置 j2ee认证考试有人知道吗? 有关Java中事件 关于JTable的DefaultTableModel获取表格单元值的问题? j2ee认证考试有人知道吗? 我要去参加晓通公司举办的pb8 internet 开发培训班,希望大家多提一些问题 如何在任务栏弹出提示信息 关于地址本的问题 如何控制Microsoft.Web.UI.WebControls中的TabStrip中的MultiPage的长度?????? 帮帮我看看这道题吧 小仪人骑自行车加速度和推车前进时,地面对自行车前轮和后轮的摩擦力方向?急~!~!~!~!~!~!~!~! 一篇英语作文 作文题目是《我的春节》要运用初一到初三的知识,要用一般现代式和一般过去式,字数200字 鸡蛋遇到盐为什么会起来浮字一定要35个以上明天要交急! 小议人骑自行车加速行驶和推车前进时,地面对自行车前轮和后轮的摩擦力方向写一篇科学小论文 幼儿园教师把一箱饼干分给小班和中班的小朋友,平均每人分得6块;如果只分给中班的小朋友,平均每人可以多分得4块.如果只分给小班的小朋友,平均每人分得多少块?(一元一次方程) 用多少盐才能让鸡蛋浮起来?如;X克能让鸡蛋浮起来 以“小议人骑自行车加速行使和推车前进时,地面对自行车前轮和后轮的摩擦力方向”为题,写1篇科学小论文 幼儿园教师把一箱饼干分给小班和中班的小朋友平均每人分6块;如果只分给中班的小朋 汽车在平直的高速公路上匀速行驶,小胖在车中测试车的速度.用手表测得汽车从路牌62km行至63km的时间是33s,此时汽车行驶的速度约等于( ) 跟加速度有关的所有计算公式 急用!一辆小汽车以v1=40m/s的速度行驶在高速公路上,突然发现… 小明和小芳同时从家出发进过10分钟正好到校.已知小明每分钟走70米,小芳每分钟走60米他们两家相聚多少米? 英语作文,告诉大家怎样做对别人才是有礼貌的 幼儿园教师把一项箱饼干分给小班和中班的小朋友,平均每人分得6块;如果只分给中班的小朋友,平均每人可多分得4快.如果只分给小班的小朋友,平均每人分得多少块? quartz手表是什么牌子 放弃也是一种美丽许多的事情,总是在经历过以后才会懂得.一如感情,痛过了才知道如何保护自己;傻过了,才会懂得适时的坚持与放弃,在得到与失去中我们慢慢的认识自己. 12个乒乓球,有1个质量有问题,不知道是过轻还是过重,用天平称3次,找出这只是轻还是重. 小芳3分钟做了48道题,错了5道.小明5分钟做了70道题,错了9道.问他们的正确率各是多少? 请问下如图 汽车速度表上那个黄色灯的标志是什么意思前段时间出现了几天没了 现在又出现了 北京市能借书的图书馆我6月26日(今天)晚上8点以前就要知道就要知道!要北京市所有的借书的图书馆名,包括本馆的联系电话,等等!最好给几个离朝阳区比较近的! 下表是一辆汽车在高速公路上匀速行驶的情况,请把表格填完整.时间(小时) 8 12 15 ( )路程(千米) 760 1140 ( ) 1900 如图,这是什么车啊?求这车的名称和型号... 有一种美丽叫放弃 怎么写思路 小明和小芳同时从家里走向学校,经过4分钟在学校门口相遇,他们两家相距多少米?(小明每分走70米,小芳每分走60米) 请问图中的车是什么? 首都图书馆的借书卡密码是几位? 送女生什么牌子手表好如题 一千左右 请问图中这台是什么车?就是不知道才问的具体是哪个品牌的? 自行车在行驶过程中,前轮和后轮受到的摩擦力的方向分别是什么? 小明和小芳同时从家出发,经过十分钟后正好同时到校,已知小明每分钟走70米,小胖每分钟走60米,他们两家相距多少米? 英语作文 杰克是一名中学生,一放学回家就打开电脑.父母认为太在电脑上花了太多时间,.英语作文请以书信的形式向杰克的朋友Frank讲述自己的遭遇,不少于50词 注:不要有语法、时态(最好 鸡蛋在清水中加盐为什么会浮起来 高端手表有哪些牌子 英语作文 杰克是一名中学生,一放学回家就打开电脑.父母认为太在电脑上花了太多时间.请向杰克的好朋友Frank用书信的形式讲述自己的遭遇.不少于50词 (不要有语法、时态、第三人称单数的 鸡蛋在清水里加盐为什么会浮起来你想想為什麼當我加鹽時雞蛋會浮起來?” 小明,小花,小芳同时到办公室请老师批改作业,小明要3分钟,小花要2分钟,小芳要5分钟 怎 因为他想去借书 用英语怎么说? 我国从南到北,森林覆盖率逐渐减小,其主要原因的生态因子是什么?A水 B温度 C阳光 D大气 有12个苹果,其中一个与那11个不一样,或许重或许轻,用没有法码的天平称三次,找出这 初中生英语作文范文在哪里找?刚刚上初中要写英语作文,我找初中生英语作文范文. 3月12日是植树节.我们少先队员每年都有到公园植树.今年也不例外看这张照片,BEN正在快速地挖洞,TONY正在慢慢地般小树苗,我正在认真地植树,LISA正在浇水,鸟儿正在快乐地在树枝上歌唱…… 初一 化学 清水中除了加盐,还可以加什么物质让鸡蛋浮起来 请详细解答,谢谢! (13 15:39:7)清水里除了加盐外,还可以加什么物质可以让鸡蛋浮起来  初中生英语作文, 高分求几篇六年级水平的英语作文!我要这么几篇英语作文 六句话以上1 Our school library 2 My Desk-mate 3 1 have a dream 4 My favourite food 5 My English Teacher 6 A new year party 7 Our English Evening急 越快越好 满意 从公园到新华书店,小芳每分钟走60米,40分钟可以到达,小刚每分钟走80米,几分钟可以到达(用两种方法解答) 小明骑自行车,看到前方的红灯就停止蹬车,则此时前轮后轮受摩擦力方向如何? 幼儿园阿姨给同学分糖.如果每人分7块则差24块,如果每人分4块分完,把糖分给了几个同学?一共有多少个糖 清水中加什么物质可以使鸡蛋浮起来?(盐除外) 试试放弃吧,也许,放弃对我们也是一种美丽.你有什么看法?要实例! 胶水干了后用什么才能使它溶解? 从公园到新华书店,小芳每分钟走60米,40分钟可以到达,小刚每分钟走80米,几分钟可以到达(用两种方法解答 ) 我想成为一名.英语作文该怎么写? 胶水干了怎么办做工艺画时拿到一种黄色的胶水,放在针管里,涂成线,粘贴细条状的东西.涂上以后过一会儿会变成半固状.现在胶水可能干了,把针头堵住了,针管里的也变稠了.这是什么胶水,有 除了往水里加盐能使鸡蛋浮起来.还能加什么 英语作文 我想成为一名律师60字左右, 为什么速干胶会使泡沫塑料溶化 为什么加入盐后鸡蛋会浮起来? 英语作文 我想成为一名服装设计师我的梦想(未来){这是题目} 要初二水平,不用太长,60词左右就可以,星期四之前要,中间最好提到巴黎,最好还有汉语意思! 汽车从A城行驶到高速公路收费站C处的速度大约是每小时多少千米?(得数保留整数)有图片!从收费站C处到B城的这段高速公路上,汽车的平均速度大约是每小时多少千米? 鸡蛋为什么会在盐中浮起来?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘