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

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

Chrome 27来了:页面加载快5% 可同步数据到Google Drive 微软发布新一代游戏主机Xbox One 搭配全新Kinect 2.0体感系统 Unity游戏引擎向iOS与Android开发者免费 Twitter获“下拉刷新”专利 开发者仍可自由使用 复杂产品的响应式设计【流程篇】 使用Javassist库为Bytecode Instrumentation开发JVM Agent 内容解析创业公司Stremor推出4款API 2013中国云计算榜单之三:174家云应用服务商,繁花似锦! 盘点各大云服务提供商:麦当劳=AWS,汉堡王=? BlackBerry Jam亚洲开发者大会9月将在香港开幕 把服务器搬进来:Splashtop在中国搭建Bridging Cloud Web框架全对比第五期 新增Windows环境 前Tumblr首席开发者回忆录:一个人也能开发出好产品 测试者和开发者,为何我们不能友好地相处? 讲师秀之11:何刚谈京东的云机遇 讲师秀之10:武汉大学张焕国教授,可信计算是云计算之成败关键 【上海直播】Windows Azure+世纪互联:中国云计算“烈火烹油” 最新版Chrome浏览器推出全新语音搜索功能 惠普第二财季净利润同比下滑32% PC和服务器销售不佳 讲师秀之11:网易汪源的成长故事 PPT集萃(三):六位国内技术大牛分享巨型平台的打造与应用 聚焦全球移动市场:创新以色列 科技巨头的倾慕之地 Android版Chrome 27浏览器正式上架 机器人——数据中心的新“网管” George Chu:在雅虎打造真正的工程师文化 2013,303+家中国云计算企业的“生态系统”之梦! 高访问量Web应用跨云端迁移的原因:权限和易用性 Web应用开发者福音 Chrome 28新增丰富通知中心功能 帷千兰旭:推广渠道鱼龙混杂,开发者请小心 关于IE 10 你应该知道的6件事 Spring Framework 4.0M1发布,支持JDK 8、Java EE 7 请问怎样关闭135端口 Photoshop7.0的一个简单问题,大师们帮帮忙! 关于动态查询的问题? 请问如何验证代理服务器? 超过半个小时不作任何操作就把这个连接KILL掉,改如何做呢? 如何才能做出只存在于托盘栏的程序! 搜集VB绘图源代码,多多益善 北京市里有没有支持asp.net的服务器空间提供吗? GGJJDDMM 帮帮我啊~~~~ 新手的问题--如何作到点击页面中的提交按钮,只刷该页面的DataGrid部分,而其它部分控件值不变?(在线给分) 大家帮忙,要取得客户端的信任,用服务器控件对客户端进行读写文件的资料? 谁说我们要和兄弟会和解了? 一直都是你们在攻击我们,靠还和解?道歉差不多。 版本的差异造成的问题,ADO连接SQL Server。求教!!! 海宜派(NSU Pie) 为什么insert into语句不能完成添加? 在线等一个简单的问题! 能用DOS盘启动然后用GHOST 备分LINUX分区吗?我想备份我的LINUX系统。 SQL中能否用CopyMemory这样的函数??? 我的猫竟拨不上号 一个菜问题 type和typedef有什么区别? 100分问题,在线等,本地XSL,XML,使用VB脚本,使用MSChart生成图形,刷新几次后IE崩溃,高分求解 socket.setSoTimeout() BCB使用ClientDataSet调用Sybase存储过程的问题 趟过“地雷阵”的铁面总理 (转载) 我的电脑为何会自动开机? emf是什么打印格式? 小偷 请问我以后删贴、结贴是不是要先向EA、ginger、大师申请? 如何实现这种查询?急!!!! 高分求救:Dos下控制(HP等)打印机打印汉字的编程,请各位帮帮我好吗? 能否将下面的代码简化呢?? 请大家给介绍几本C++学习的入门书籍,好吗? type和typedef有什么区别? 本人姓刘,现在正在给自己的孩子起名,希望大家多多帮忙! 大力好~~~~~~~~~~~~~~ 如何用数组操作的方法对控件组操作? 谁有需求分析文档?明天结帖。 各位大哥,有没有网络监控方面的控件,小弟有急用。 免费空间广告去除~! Delphi对文件的操作 简单的问题,先解决先给分了 后台服务加载,在线等待,高分求解! 帮助解决 硬盘文件系统报错 php+xml有没有大一点应用的例子,最好是电子商务方面的 关于脚本!!!!急急急!!! 我的sa帐户不能用了 大家知不知道,在Mysql 一个数据库能放多少表 ,200个表有问题吗?性能会怎样。?? 请问如何加密数据库?用软件还是用代码? xslt的空格和回车显示问题 内蒙语 祝:你幸福怎么说 进气格栅的用处是?1,汽车车标中间位置的进气格栅,我记得是给发动机散热,还有让空气进入进气道.,提高燃烧的空气那汽车保险杠 下面的,那个格栅,听朋友说 是进气坝有知道的么/谢谢 学过《闻一多先生的说和做》,有没有有关“说”和“做”的名人名言三句以上 鸟卵细胞中,能进行胚胎发育的是A.卵白B.卵黄C.卵壳膜D.胚盘 海上的夜是柔和的,是寂静的,是梦幻的.类似造句kuaikuai 糖尿病患者在饭后血糖含量为什么会下降 内蒙古语怎么说?"我喜欢你"用内蒙古语怎么说?本来是想这样问的~ 已知园C:(X+1)^2+Y^2=8,定点A(1,0),M为园上一点,点P在AM上,点N在CM上,且满足AM向量=2AP向量,NP向量*AM向量=0,N的轨迹为曲线E.求曲线E的方程. Whom do you think you are, 鸟类的卵细胞是鸟卵的哪部分 土方格栅什么作用和用途? can i do it well?I am you can A think B sure C hope D believe 选什么? 先天下之忧而忧,的下一句 内蒙语欢迎你怎么写?这个又是什么字 使用粉碎格栅的好处? 哪些试剂可以除去蛋白质中的脂 下列哪个结构属于鸟的卵细胞A.卵黄 B.卵盘C.卵白D.卵黄膜这道题是我生物练习册上的 答案给的是B.可是我印象里没有卵盘这么个东西. 蝗虫主要危害的植物有哪些生物的! 我喜欢你里约热内卢语怎么写? 给一些.有感触的句子 我要知道蚂蚱对人体的危害,写的越严重越好^ 蒙古语我喜欢你的写法不要拼音要确切的怎么写就是能贴图的最好贴图那种长得像钥匙一样的文字(咳咳,不好意思,那文字被我形容成那样了)恩我邮箱834077646@qq .com恩.发给我吧.给了讲一声 he should study hard to pass the exam(对划线部分提问)划线部分study hard 蝗虫对人身体有什么危害 广东语我喜欢你怎么说? 为什么一天中人体摄取的营养素中水的量比其他营养素要多为什么一天中人体摄取的营养素中水的量最多,为什么比其他营养素,比如糖类,蛋白质要多我问的是所摄取的水为什么最多,这个和人 已知点M(8,0) 和圆X^2+Y^2=16 上动点A,点P是AM的中点,则点P的轨迹方程为? 谁知道珍珠鸟的结构图啊? 请问这两个词的意思是啥?一个是别具一格,一个是笔走龙蛇!请用词典查!请用词典查!一定要准确!如果查不到就查,妙笔生花和引人入胜!随便挑两个查,请用词典查!请用词典查!请用词典查!请用 钚239是铀238经过中子照射蜕变形成的.什么叫中子照射? 鸟卵结构图,据图回答 请问这两个是什么词 一氧化碳与哪些物质能反应最好是能放出热量的 我要小鸟的素描结构图,有没有?什么鸟都可以 If you work hard you can swim better.(改为祈祷句 什么物质在常温下与一氧化碳反应什么物质能在常温下与一氧化碳反应?最好是有明显变化的(如溶液沉淀,或有气泡生成之类的) 我的孩子抄作业都能抄错怎么办?是不是小孩子都是注意力不集中啊,这样要怎么解决啊,要慢慢引导吗?还是有什么课程可以纠正的? you had better study hard,_____ _____? 汽车中的进气格栅英文怎么翻译? 抄作业的好处关于辨论会的,全面一点 You'd better work hard 改否定句 车格栅的作用是? 能不能抄作业! 沉沙池为什么多采用曝气沉沙?曝气与不曝气的优、缺点是什么? 我本将心向明月,奈何明月照沟渠具体什么意思?出自哪里? "先天下之忧而忧"后半句是什么? 简述单相TCR的工作原理,其主要作用是什么 为了摄取人一天所需的蛋白质量,要吃几个鸡蛋最适合? 先天下之忧而忧的后半句 hxiaoeng 已知定点B(3,0),点A在圆X2+Y2=1上运动,M是线段AB上的一点,且AM=1\3MB,则点MR 轨迹方程为( )A.(X-1)2+Y2=9 B.(X-3)2+Y2=1 C.(X-3\4)2+Y2=9\16 D.(X+1)2+Y2=16\9应该是:X²+Y²=1 A.(X-1)²+Y²=9 B.(X-3) 三角行 知道坡度 知道斜边 如何求高 先天下之忧而忧,后一句是什么? 评论:感恩生命演讲稿 知道一个底标,513.42,知道一个坡度系数是1:1.5,能否求出顶标高 先天下之忧而忧的后一句 进气格栅和散热格栅我想问几个问题,希望大家回答我1.是不是发动机产热,然后一部分让水箱来冷却,一部分通过散热格栅排到外面去了?2.听说进气格栅进的气是去冷却水箱的,那么这是什么原 我本将心向明月.奈何明月照沟渠.这句话的含义是什么? 蛋白质的化学试剂可以吃吗? 汽车前面的进气格栅是做什么的 碳和一氧化碳可以反应吗? 各国学校扎堆北京招生(图)俄罗斯严防“黑寡妇”袭击 确保冬奥会祭拜烈士墓 金正恩:“心疼得睡不着觉金正恩参谒牺牲烈士墓地 称心疼得睡不从奥巴马借助大数据成功连任说起美国一位妈妈送13岁儿子手机前“约法人民币升值,钱却为何越来越不值钱埃及审判穆尔西或将引发新的流血冲突俄罗斯:严防“黑寡妇”袭击 确保冬奥俄称斯诺登可去德国协助调查窃听事件泰国沉船事故致一中国人遇难 渡轮超载苏格兰首席部长访华 推动双方经贸合作苏格兰首席部长访华 推动双方经贸合作缅甸穆斯林赴邻国避难遇海难 或死伤惨中国海外移民生存录:从\"卖猪仔\"美澳联手监听亚太 “特等舱”行动曝光印度女婴家传怪病 身体多毛酷似狼孩【深秋也会得热射病 永康男子差点没了命男子驾车时低头捡手机 一抬头开偏车道宁海男子欠前女友20万元不还 法官上曼德拉生平电影首映 前妻称反映其“苦体育明星牵手电商平台 助力退役优秀运卢氏县羊肚菌和蜂蜜以质量取胜远销海外渑池供电公司:党员服务队进工地争当岗新郑市公安局龙湖派出所 斗智斗勇3小驻马店市持续发力 逐步规范 贡献“双驻马店全力以赴办好第三届产教融合发展淅川《丹江夜雨》唱响京城CBA联赛改革地方体育局达共识:先剥余学友在汝南县确山县调研指导县乡换届浙商银行业内首推 个人财富“池化”管走进峰光无限装饰 明早九点一起看工地主会场明起对公众开放被辞退司机报假警 称公交车凌晨撞人逃市质监局组织社会各界代表召开座谈会“甩老族”频现 老人吃苦 养老院吃亏未央:建设新型智慧生态城市典范极 花(28)醉驾入刑5年 西安2519人被查处中欧中亚班列 运行线达62条我们离苍老那么远李安直言吴天明了不起
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘