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

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

Localytics:AngularJS代替Backbone 代码减少一半 史上增长最快的SaaS服务Optimizely:13亿访客,10万次测试 IDF上的云计算故事 移动周报:百万年薪、微信疑云,老罗小马本周很忙 一个创业失败者的自述:我是如何搞砸一款产品 收入百万美元:一个放弃上大学的程序员 Cocos2D配Box2D:逆天小白程序员作iOS游戏 招聘移动开发,老板必问的10个问题 黑客用智能手机劫持和控制民航飞机 几小时即可使互联网瘫痪的黑客 现已加入谷歌 Tsar开源:淘宝内部大量使用的系统监控工具 五款超实用的开源SVG工具 微信收费事件背后被广泛忽略的技术细节 UIDesigner 3.0架构设计总结 黑客怒了:政府花930万美金仅做一款App Email服务迎来“第二春” 未来将更加个性化 贯穿应用开发始终的八大陷阱 微评微软也推智能手表:是追求未来,还只是跟随? Firefox OS今年6月在5国首发 不含美国市场 8086/8088汇编指令手册 下一个被黑客攻击的对象—无线路由器 Windows Blue开始按钮或将回归,你怎么看? Evernote推孵化器 不占股权 基于C++和Lua的移动游戏引擎Leadwerks 3发布 苹果秘密测试iOS 7与iPhone 6 或将6月发布 酷6 CTO 陆坚:请先信任你的程序员 从电信联手i-Free,看运营商渠道的加速整合 “Animory”开发者分享HTML5游戏开发经验 Appflood SDK:连接中国与海外App流量交互平台 Apache Subversion 1.7.9正式发布! 微软IE浏览器5大动向 加速吸引开发者 求救,你遇到过吗? textbox问题。在线等待! 蓝屏提示Kernel stack size less than 0x500 bytes,怎么解决阿 关于数据库恢复 这里有人搞PSOS开发的吗?? 上帝说他喜欢偷窥,我当然愿意让他在我的第一次的时候大开眼界,但我只和那个跟我结婚的女人做,上帝哭了,说“我怕是等不到了” 菜鸟的问题:orb vs application server 关于在vector里面放入跟踪类的一些情况,进来看看。 Jdk 1.4 怎么删除一个string内所有的中文字? 哪位有输入法的源程序(vc6.0可以编译的)可否给俺发一份? 初学者问题,php、mysql如何安装? 一台新路由器怎么来配置啊,谢谢了!! 急聘二名程序员 今天发现以前上不去的网站可以上了,是否中央对网上舆论放松了? 文件的操作问题 强烈建议斑竹删除魔鬼先生的ID,因为它不配和我们在一起讨论问题 南方的服务器都访问不了了!! 包括tencent, etang 还有我放在上海的服务器 C++标准? DDE技术请教高手 大家帮忙估个价吧(本人 成都),谢谢! 关于在php 中使用 script 的问题 怎样在每天的规定时间触发一个事件?(100分) struts多行提交怎么做!!!!!!!!!!! 在16M的flash中做了一个linux系统后,如何给它加一个rsh的服务器?(现在只有1M空间了) 请问各位作过水晶报表的,我是用报表专家的提示连SQLSERVER2000数据库,但为何运行时提示:无法登陆!!有那位有过解决的经验??很急, 有人知道这是为什么吗? 用ASP可不可以显示数据库的表的结构啊? 2000个线程同时填数据库的测试结果 如何用VC来画座标图,望众高手献艺 怎么编译pro*c? (unix下)———在线等!!!! 今天升到5个裤衩,高兴,散分 有谁知道《斯托克代尔悖论》的内容? 使用VB6.0编程设置IIS5.0服务器 谁有InstallShield,包括汉化界面,中文语言包和注册码,200分回报 freedorm格式数据窗口打印问题,字太长如何自动换行, 一个头痛问题。 做过政府审计软件的请帮帮忙,怎么从十来套不同表结构的数据库导数据到一个固定表结构的数据库呢? 如何让菜单可用或不可用?急啊~~ Lotus中的js问题 哪有Oracle中文最新版下载呀, 请问各地delphi认证培训的费用是多少? re:下雨了 怎么样加提示框 借一个问题!XP里面网卡怎么工作不正常 请问有什么办法破VBA的密码 CEdit 背景色的问题 100 分 请问vb中浏览器控件是在哪个文件中,另外我想在vb程序中加入介绍性网页,应该怎么办! 了解jpeg的请进 高分急求数据库解决方案! 请问vb中浏览器控件是在哪个文件中,另外我想在vb程序中加入介绍性网页,应该怎么办! 存储类 今天听说《光辉岁月》是beyond乐队献给南非首位黑人总统的歌曲,请问这位总统叫什么名字 用法语解释一句话小王子里面那句经典的话“tu sais quand on est tellement triste,on aime les couchers de soleil.不要太难的句子,一两句话就行. 为什么说决策是管理的本质? 光辉岁月 是beyond为曼德拉写的 这句话用英语怎么说 钱贬值的本质是什么? 如图,在边长为4的等边三角形ABC中,AD是BC边上的高,点E,F是AD上的两点,则图中阴影部分的面积是( )A.4√3B.3√3C.2√3D.√3对不起没办法将图画出来,只能告诉大家该图是一个边长为4的等边三角形, 形容快活 带心的成语 法语 选择 有说明最好 急求~~~1 jacques va venir a Nice ( ) une semaine.A. en B pour C.dans D. il y a 2 elle a des conffres semblables ( )A avec les miennes B aux miens c aux miennes d des miens3 ces films ne sont pas 已知:等边三角形ABC的边长等边三角形ABC的边长为2,D,E分别是AB,Ac的中点,沿DE将三角形ADE折起,是AD垂直DB,连AB,AC,得如图所示的四棱锥A-BCED(1)求证:AC垂直平面ABD(2)求四棱锥A-BCED的体积 求高手教如何做政治选择题 法语du和de的读音Les femmes ont du riz.Les femme n'ont pas de riz.这两句话中的de和du发音是不是一样? 本质决定一切,这句话怎么来解释的 e e t r c n 怎么排成一个英语单词 钱的本质是什麽 已知a的模=根号2,b的模=3,a与b的夹角为45°求使a+xb与xa+b的夹角为钝角时,x的取值范围 若某一函数的导函数是2的x方,则该函数为? piao po 是什么词语 27^2/3-(1/2)^-2+(√2/2)^0+lg4+2lg5-7log7^8= 关于出师表和陈情表的经典名言 求教法语:de和du究竟怎么区分Je vous presenter Christian Rigon,directure du francaisJe viens de Madridde和du可以互换么? -1-(0.5-2/3)除1/3*[-2-(-27)|1/8-0.25|= market access mechanism 我要一个准确的翻译意思我懂 法语中de du分不清J'ai horreur de l'art moderne.Elle n'a pas d'entant.Il fait du tennis.Je fais de la natation.这里的du de有什么区别, 这是物业管理实物的案例题1、某高档商品住宅小区环境优美,绿化覆盖率超过30%物业管理公司以给业主生活提供方便为由,单方面做出决定,在中心花园草地边设了几个售货亭,出租给小商贩经 英语翻译 四年级科学小论文 100字 在法语中 dont 的用处 dont 跟 de que 的区别 什么是scale up和scale out 科学作文100字 法语dont的用法疑问Bonjour monsieur,j'enquête sur le vol dont a été victime Mme Pivert这句话中dont的用法, scale we want to talk about gains in terms of scaling the solution out with an AX object server that scales out What are some items or possessions that you or your family own that you cannot live without today? 法语,dont 有名词补语的用法.这句话:Le chanteur dont j'aime les disques est tres connu.这里don这里 dont 相当于whose 修饰 disques,那么为什么disques,前有还定冠词les? 下面这句中的“ scale up ”是什么意思?It is so tricky that I have given up on it for now as far as finding a general solution that can scale up well我是指:在这句话中,scale up怎么理解? 送东阳马生序的生是什么意思 看拼音写词语gong dian hui huang是什么 如果有勇气的话,就不要吝啬该付出的信任谁能帮我解释下这句话的意思啊,先在此谢过啦~~都没人回答了么?如果回答的好我给加悬赏~~ 分母是9的最大的假分数是什么 数轴上点A表示的数为-4,点B表示的数为-6,则点B在点A的( )侧. Skill Up Before You Scale Up need to的否定回答need否定形式还有does not need to 试运用唯物辩证法的对立统一、质量互变规律或本质现象中的某一原理,(或者其他唯物辩证法原理都可以)来分析问题和事例. 说明要成功就必须付出代价的名句 否定前移和 need 否定前移的句子主语必须是第一人称吗?是不是有的次不用否定前移,否定加在宾语重句中和主句的位于上都行呢?虽然是否定前移,但是不是在翻译成汉语的时候否定要翻译到后 下列哪个水平的生理学研究有助于揭示生命现象最本质的基本规律? 고독한.Poser advice和advise的区别rt 乐扣乐扣杯变形了怎么办 相信自己,相信伙伴,付出会于回报成正比,曾经有句话,作为一个领 求advice和advise的区别例如那个可以加s 孔子的性格是怎样的需要具体描述下 英语翻译Structure Determination of Organic Compounds:Tables of Spectral Data内容主要是讲数据结构的 蜿蜒的近义词是 乐扣塑料杯 融化、变形的温度是多少? 翻译韩国人名 Park Il Young 蜿蜒的近义词求各位同志帮帮忙 饿(wu第4声有什么组词没了是wu不是e 韩国歌手Park ju hee翻译成的中文名字是什么? 土建及做工程资料的高手进!混凝土试块强度的计算题.某工程结构混凝土为C30,取样10组代表值:μ:33.6 ,38.1 ,28.9 ,30.6 ,35.3,36.1,34.2,33.3 ,31.7,29.8 因大于十组故λ1=1.70,λ2=2.09,采用统计立法判断并 看拼音写词语!zhui dao nie zi zhui第一声 dao第四声nie第四声zi看拼音写词语!zhui dao nie zi zhui第一声 dao第四声nie第四声zi第三声 汤加附近海域发生6.4级地震斯诺登密会德议员 称愿为NSA窃听事伊拉克总理会晤奥巴马 望美售武对抗“王毅夫人发起扶贫义卖 筹款用于解决云王毅夫妇掏腰包助阵“国际义卖”(图)中纪委监察部特邀40名监察员 包括各沙特一监狱发生暴动致3人受伤大马士革郊区炸弹爆炸至少10人死亡人民日报曝陆军第12集团军一战士训练中国每年新增癌症患者占全球20% 多北京出租车“小费”软件流行 高峰时乘媒体揭秘美国监听手段:大使馆屋顶材料陕西宁陕副县长涉嫌携妻公款出国 被纪汤加附近海域发生6.4级地震法国外交部证实两名法记者在马里被杀害尼日利亚南部发生踩踏事故致数十人死亡英国哈里王子因遭英报窃听尴尬往事被曝洛杉矶机场枪击案嫌犯或因被辞退报复社北京一精神病患者扎伤4名护士 其他护加拿大暴风雨30多万人受影响加拿大暴风雨30多万人受影响国产SUV究竟哪家强?热销国产SUV宝安集团预计三季度净利同比上涨家的样子 篇一:装修风格的选择官方力推国安系统“形象片”,重点突出家有男孩,不可少的角色!Segway将在法庭上舌战中国群雄省级人大常委会会议密集召开,多位省管不要说我色,但我真的很喜欢胯下运动中纪委机关报批多地“乱改地名”:根本设置“985”“211”大学的危害中国摄影师体验高丽航空飞行 揭秘朝鲜【一周理财回顾】2015.5.31星CF赛事主管:中国队最大威胁非日韩,这一刻终于还是来了:蔡康永小S宣布告PS表情恶搞简直不忍直视【理财学堂】25分钟蒸发1167亿,2599元 三星Galaxy A5国大酒窖“小明,滚粗去!”(银行版)想成为真正的文玩人,就要先明白这些!违反社会主义道德?不止通奸那么简单
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘