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

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

付费授权、开放源码,全新虚幻引擎4正式发布! Larry Page未来计划:用科技创造美好生活 AWS 8周年,收入超四主要对手之和 分析:北京网络广播电视台私有云实践 腾讯云总经理陈磊分享微信云三步曲 十大技术,十家机构,从行业制高点一览大数据 【OSTC讲师专访】严旭:文艺豆瓣也很开源 大姨吗携手睿仁医疗 推智能体温贴Raiing 三个火枪手将重袭传统零售业 网易王健宗:革命Hadoop,Spark带来百亿市场价值! MediaTek高级总监Chien-Ping Lu:HSA在下一盘大棋 Docker一周岁生日快乐 虚拟现实,正在改变什么? 一周消息树:腾讯CTO张志东离职 未来希望帮技术人成长 又见真人CS:13th Lab推出移动FPS对战平台 前瞻、教育、创业:Maker Faire演讲嘉宾揭晓 提高API采用率的六大方法 一周热点:以咖啡店为例演示Web应用程序扩展 中国云计算大会PPT集萃(四):数据安全与实际应用挑战 CDN前景光明,SDN发展的驱动力源于对产业的颠覆 Android、WP双系统若要发展 难题不断 即将于下周召开的微软Build 2014六个愿望清单 【独家专访】腾讯陈磊:你不知道腾讯对开源有多爱 地下数据交易网站Rescator被黑,疑似Target报复 Spark独门秘籍:打造结构一体化、功能多元化的高效数据流水线 【走进支付宝】重磅嘉宾!历届“走进企业”回顾 【OSTC讲师专访】腾讯TDW项目:开源的分布式数据仓库 ID爆发的物联网时代,我们该如何管理手中的数百个账户 取代Google Maps?苹果大幅优化Apple Maps用户体验 中交兴路系统架构师杨晓明:Hadoop+Storm+ HBase…,打造交通行业创新型服务 雨果·巴拉的第二春:我与小米的那些事儿 有没人对挂广告条赚美元感兴趣? 一起研究研究 光驱不能自动读取怎么办!! 偶辛勤灌水,到底是为了什么? 为了帮助后进青年提高,请水园的mm们来登记一下 请问在SQL SERVER 2000中,以下字段类型有什么区别: 请各位介绍一些FLASH的好书!!!!!我要学! 关于PCMCIA ...欢迎交流指导! 她问我“上个黄色网站让我看看”, 是什么意思????????? 怎么样能提高IE的速度? 你的DELPHI6的帮助有没有这种问题? 请推荐几处下载java编程方面电子书的站点? 请问有没有工具把access中的文字繁简转化一下?? 找一个高人——HC 请教如何使用API中的GetUserName()? 怎样才能买到 外文期刊??? 如何将一屏显示不下的文档打印在一页当中(CHtmlView) 请问《程序员》杂志上的那几本外文期刊怎么买??? 我下载了几个rar文件有*.rar\*.r01\*.r02等等,可是这个网站没有提供合并文件,忘了怎么合并了,谁知道快告诉我。copy *.rar+*.r01不管用 请教在线的高人(在oicq上吗?) 我是白痴!大虾,什么是专家分,怎么得,有捷径吗???????????? 图形化界面问题!控件与窗体不重合! 书上的东西我看不董,是关于PB70与COM/MTS的,COM/MTS是什么,谁能告诉我? 怎么样能解决死机的问题? 跟帖比聊天有意思多了,哈哈 过去了,就不要再提 灌水乐园,我的MUD练功场 StringList 与 String的区别 为什么我的组合筐里只有最后的项,即"交叉线",没有其他的内容? 关于Tmemo 共享软件的开发经验 部件(Crystal Repot)引用错误(crystl32.ocx),请高手指点,,谢谢 无数个问题之123 steps你有oicq吗?壮丁!!!sos 怎样将数字字符转化为数字呀? WIN98下能读的光盘到了WIN2000/NT下居然读不出来! WIN98下能读的光盘到了WIN2000/NT下居然读不出来!(我的光盘是刻录的) 我不想要分(也许我只是个女生) 40分=一网址:那儿有Effective C++ 2e电子书? 如何在菜单中加入下拉框?像delphi的那样. 怎样用vb程序实现监控打印机打印输出情况 大家评出水园最有人气的mm,我给分啊,行动要快啊~~~~~~~~~~~~~~~~~~~~明天晚上7点结贴 编译servlet文件出错!急!!!! 寻觅朋友(用delphi优先) 我希望能认识安徽的程序员~~~~~~~~~~~~~~~联系:6011458(OICQ) 很长时间,我还是觉得这是一个事实! javascript中怎么进行数据类型间的转换? 关于非文档视图结构程序的菜单 寻delphi兼职程序员,要求比较懂数据库,多劳多得,不劳不得,报酬从几十元到几千元不等。 在程序中更改Filter to lastlove(☆)robin(★) 关于《深入浅出MFC》电子书 形容词和副词要怎么区分?另在,我要怎么识别单词的词性?如名词为n 介词修饰什么词性 英语中的名词动词代词形容词副词宾语主语谓语等是什么意思 英语上名词、动词、形容词、副词、代词、介词、数词 perp.是什么词性?(介词,形容词,代词等等) 在英语中,什么词后面接动词的原型,什么词后面+动词的ing 英语如何分辨哪些是动词.名词.形容词.副词.数词.代词.冠词.介词.等. 介词,动词,形容词,名词后分别跟词性?需要举一些例子给我,另外可以附带一些初中的词性转化 给我.比如 名词interest 形容词interested形容人/interesting形容物 请给我一些详细点的资料 谢谢了. 在英语中,主语,谓语,宾语,动词,形容词,副词,行为动词,表语,几乎动词,介词如何理解? 英语语法 英语词性缩写 全部的 介词有哪些,介词的后面是加什么词性 英语选词填空(15选10)词性之间的搭配有何规律?(比如动词后面跟副词) 英语语法中词性的用法 英语中的宾语,介词,形容词等词性是什么意思 英语中副词,介词,形容词,名词,动词有什么特点,怎么个用法?可以列句子说明,并且指出句子中包含的词性!快,通俗易懂点的! 英语语法中v.vt.vi.这种符号分别表示什么词性 英语里面状词定语谓语宾语表语什么意思通俗点的 动词.名词.介词.副词.形容词后或前面跟什么词性的词? 初一上英语语法短语句子,关于sth和sb的如:like doing sthwould like to do sth…… 英语里面状词 定语 谓语 宾语 表语之类的什么是意思如题 英语问题“单词 词性缩写字母”比如动词 形容词啥的缩写 初1英语语法短语句子,关于sth和sb的 全部! 英语里什么词可以做主语,谓语,宾语,定语,表语等. 英语中动词前面和后面可以加什么词性的词例如形容词 副词啦 前面和后面啊~ 求英语语法(sb.sth之类的)最好是初一的比如buy sth.for sb.sell sth.to sb.之类的,要汉语 介绍主语 谓语 宾语 状语 表语.等词语在英语中的概念(回答一定要具体)而且要通俗易懂 各种词性后跟什么词?形容词后加..系动词后加..动词后加....................等等还有,,people + is还是are 初1英语语法短语句子,关于sth和sb的7年级所有的 俺English差 好心人说下 最好是专业的 很懂的格式如下:ask sb to do sth (意思) 什么词可以做主语 谓语 表语 宾语 定语?要具体一点 在英语作文题目中什么词性的词首字母不大写?be动词首字母大写吗? really是什么词性 英语定语从句中能充当宾语的有哪些词?还有可以充当主语的? 所有英语词性缩写比如动词,形容词.什么adj,vi,vt这类的.要全! 最近这个单词用形容词词性怎样写? 什么词可以直接接宾语(英语中)| :及物动词---可以直接接宾语 行为动词 | | :不及物动词---不可以直接接宾语 ㄗs:我不明白的就是什么词性的词后面可以直接宾语 什么词性的词后面不 英语中 各种词性的简写及意义例如名词的简写是n,还有意思, h开头的形容词单词(词性是好的) 英语中能做宾语的有什么类型的词? 英语词性缩写不要太多,几个基本的就可以了,只需包括初中所有的就行了. really是什么词性,real与really有什么区别 什么叫宾语.动名词.副词.反正英语里的语法的这些词都解释一遍.别给我搞那些专业的术语来解释和回答.就用好理解的方法来解释.好的回答有高分、、 英文a.是什么词性的缩写?是adj还是adv?请快一些, “欣赏”这个词属于什么词性?比如,“我很欣赏你”,或是“欣赏是一门艺术”,抑或是“欣赏你不代表膜拜你”之类,请问,这个词在不同的句式里,算什么词性和什么语? 英语-动名词做宾语我学习动名词做宾语的时候看到了:要记住如下动词及短语只跟动名词作宾语:enjoy,finish,suggest,avoid(避免),excuse,delay,imagine,keep,miss,consider,admit(承认),deny(否认),mind,p 在英语中,各种词性的缩写 “回答”这个词属于什么词性如果在“那女孩的回答给了我一种自信的感觉。”中也是吗? 英语动名词,宾语,表词,主语造句一个造一个和中文意思 谁能告诉我各个词性及英语缩写?比如说动词V 越全越好 所谓这个词属于什么词性 英语中有些动词后接不定式或动名词作宾语时有严格的区别,可以将它们分别归类~谁知道这方面的详细分类?(动词越多越好) 英语中所有词性的简写!比如及物动词vt 不及物动词vi尽量全! 看看这个词是什么词性?The young people were still abroad at the dead of night.其中的abroad是什么词性?be still 后面应该跟什么词?形容词还是副词? 英语中只能接-ing分词作宾语的动词有哪些?用英语单词表示 谁能告诉我英语词性的缩写(全部)带解释那种,感谢赏 look后加什么词性He looks ( ).In fact he isn‘t.A.care B.careful C.carefully D.more careful(主要的问题是:look(系动词)后加什么词性的词) 英语中类似名词动词先形词谓语宾语什么的都什么意思啊好像还有几个这种.最好加上英语举点例子... 所有英语词性符号简称注意,是简称哦. 词性的意义结构包括虚词 英语中名词动词宾语主语什么词什么意思?我是刚开始自学英语的理解能力很差 网上查了还是不懂 英语词类 词性 有什么区别
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn