• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

        動態(tài)取得網(wǎng)絡(luò)鄰居的工作組與計算機(jī)名

        動態(tài)取得網(wǎng)絡(luò)鄰居的工作組與計算機(jī)名

        更新時間:2022-04-26 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        如何在程序中動態(tài)取得Win95/98的網(wǎng)絡(luò)鄰居中的工作組及計算機(jī)名?  
        可參考下面代碼,或許有所幫助:  
        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樹上所有  
        的網(wǎng)絡(luò)資源. 實際上瀏覽是要花費很長時間的,這您可以通過在WINDOWS資源管理器  
        中打開"整個網(wǎng)絡(luò)" 來比較一下. 如果你設(shè)置SCOPE屬性 為nsContext , 你就可以看到  
        和網(wǎng)絡(luò)鄰居中一樣的機(jī)器列表.  
        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.

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 日韩亚洲国产综合久久久| 黄色网站软件app在线观看免费 | 99亚洲男女激情在线观看| 国产一卡二卡四卡免费| 亚洲国产精品无码久久久| 99re免费99re在线视频手机版| 亚洲AV成人无码久久精品老人| 免费一级不卡毛片| 亚洲天天在线日亚洲洲精| 亚洲视频在线免费播放| 亚洲国产精品综合久久20| 国内一级一级毛片a免费| 亚洲国产成人久久综合| 成人伊人亚洲人综合网站222| 色多多www视频在线观看免费| 超清首页国产亚洲丝袜| 免费国产在线视频| 亚洲制服丝袜精品久久| 免费无码黄网站在线观看| 黄色a级片免费看| 久久精品国产亚洲综合色| 精品一区二区三区无码免费视频| 亚洲二区在线视频| 国产自产拍精品视频免费看| www永久免费视频| 亚洲自偷精品视频自拍| 午夜成年女人毛片免费观看| 国产黄色片免费看| 久久亚洲日韩精品一区二区三区 | 91精品免费在线观看| 亚洲AV无码片一区二区三区| 久久精品国产亚洲Aⅴ蜜臀色欲| 久久大香香蕉国产免费网站| 亚洲综合一区无码精品| 亚洲精品tv久久久久久久久久| 久99久精品免费视频热77| 自拍偷区亚洲国内自拍| 久久久久亚洲AV无码专区网站 | 啦啦啦www免费视频| 亚洲高清免费视频| 亚洲国产日韩在线人成下载|