⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 网络和通讯编程.htm

📁 对于学习很有帮助
💻 HTM
📖 第 1 页 / 共 2 页
字号:
    property Display: TNetDisplay read FDisplay;<br>    property Usage: TNetUsage read FUsage;<br>    property LocalName: string read FLocalName;<br>    property RemoteName: string read FRemoteName;<br>    property Comment: string read FComment;<br>    property Provider: string read FProvider;<br>    property SubItems: TNetworkItems read FSubItems;<br>    end;<br>    TNetworkItems = class<br>    private<br>    FList: TList;<br>    procedure SetItem(Index: Integer; Value: TNetworkItem);<br>    function GetItem(Index: Integer): TNetworkItem;<br>    function GetCount: Integer;<br>    public<br>    constructor Create;<br>    destructor Destroy; override;<br>    procedure Clear;<br>    procedure Add(Item: TNetworkItem);<br>    procedure Delete(Index: Integer);<br>    property Items[Index: Integer]: TNetworkItem read GetItem write<br>    SetItem; default;<br>    property Count: Integer read GetCount;<br>    end;<br>    TNetworkBrowser = class(TComponent)<br>    private<br>    FItems: TNetworkItems;<br>    FScope: TNetScope;<br>    FResourceType: TNetResourceType;<br>    FUsage: TNetUsage;<br>    FActive: Boolean;<br>    procedure Refresh;<br>    procedure SetActive(Value: Boolean);<br>    procedure SetScope(Value: TNetScope);<br>    procedure SetResourceType(Value: TNetResourceType);<br>    procedure SetUsage(Value: TNetUsage);<br>    procedure EnumerateNet(NetItems: TNetworkItems; lpnr: PNetResource);<br>    protected<br>    public<br>    constructor Create(AOwner: TComponent); override;<br>    destructor Destroy; override;<br>    procedure Open;<br>    procedure Close;<br>    property Items: TNetworkItems read FItems;<br>    published<br>    property Scope: TNetScope read FScope write SetScope default nsGlobal;<br>    property ResourceType: TNetResourceType read FResourceType<br>    write SetResourceType default nrAny;<br>    property Usage: TNetUsage read FUsage write SetUsage default [];<br>    property Active: Boolean read FActive write SetActive default False;<br>    end;<br>    implementation<br>    type<br>    PNetResourceArray = ^TNetResourceArray;<br>    TNetResourceArray = array[0..0] of TNetResource;<br>    { TNetworkItem }<br>    constructor TNetworkItem.Create;<br>    begin<br>    inherited;<br>    FSubItems := TNetworkItems.Create;<br>    end;<br>    destructor TNetworkItem.Destroy;<br>    begin<br>    if FSubItems <> nil then<br>    FSubItems.Free;<br>    inherited;<br>    end;<br>    { TNetworkItems }<br>    constructor TNetworkItems.Create;<br>    begin<br>    inherited;<br>    FList := TList.Create;<br>    end;<br>    destructor TNetworkItems.Destroy;<br>    begin<br>    Clear;<br>    if FList <> nil then<br>    FList.Free;<br>    inherited;<br>    end;<br>    procedure TNetworkItems.SetItem(Index: Integer; Value: TNetworkItem);<br>    begin<br>    if (FList.Items[Index] <> nil) and (FList.Items[Index] <> Value) then<br>    TNetworkItem(FList.Items[Index]).Free;<br>    FList.Items[Index] := Value;<br>    end;<br>    function TNetworkItems.GetItem(Index: Integer): TNetworkItem;<br>    begin<br>    Result := TNetworkItem(FList.Items[Index]);<br>    end;<br>    procedure TNetworkItems.Clear;<br>    begin<br>    while Count &gt; 0 do<br>    Delete(0);<br>    end;<br>    procedure TNetworkItems.Add(Item: TNetworkItem);<br>    begin<br>    FList.Add(Item);<br>    end;<br>    procedure TNetworkItems.Delete(Index: Integer);<br>    begin<br>    if FList.Items[Index] <> nil then<br>    TNetworkItem(FList.Items[Index]).Free;<br>    FList.Delete(Index);<br>    end;<br>    function TNetworkItems.GetCount: Integer;<br>    begin<br>    if FList <> nil then<br>    Result := FList.Count<br>    else<br>    Result := 0;<br>    end;<br>    { TNetworkBrowser }<br>    constructor TNetworkBrowser.Create(AOwner: TComponent);<br>    begin<br>    inherited Create(AOwner);<br>    FItems := TNetworkItems.Create;<br>    FScope := nsGlobal;<br>    FResourceType := nrAny;<br>    FUsage := [];<br>    end;<br>    destructor TNetworkBrowser.Destroy;<br>    begin<br>    if FItems <> nil then<br>    FItems.Free;<br>    inherited;<br>    end;<br>    procedure TNetworkBrowser.EnumerateNet(NetItems: TNetworkItems; lpnr:<br>    PNetResource);<br>    var<br>    dwResult, dwResultEnum: Integer;<br>    hEnum: THandle;<br>    cbBuffer, cEntries, i: Integer;<br>    nrArray: PNetResourceArray;<br>    NewItem: TNetworkItem;<br>    dwScope, dwType, dwUsage: Integer;<br>    begin<br>    cbBuffer := 16384;<br>    cEntries := $FFFFFFFF;<br>    case FScope of<br>    nsConnected: dwScope := RESOURCE_CONNECTED;<br>    nsGlobal: dwScope := RESOURCE_GLOBALNET;<br>    nsRemembered: dwScope := RESOURCE_REMEMBERED;<br>    nsContext: dwScope := RESOURCE_CONTEXT;<br>    else<br>    dwScope := RESOURCE_GLOBALNET;<br>    end;<br>    case FResourceType of<br>    nrAny: dwType := RESOURCETYPE_ANY;<br>    nrDisk: dwType := RESOURCETYPE_DISK;<br>    nrPrint: dwType := RESOURCETYPE_PRINT;<br>    else<br>    dwType := RESOURCETYPE_ANY;<br>    end;<br>    dwUsage := 0;<br>    if nuConnectable in FUsage then<br>    dwUsage := dwUsage or RESOURCEUSAGE_CONNECTABLE;<br>    if nuContainer in FUsage then<br>    dwUsage := dwUsage or RESOURCEUSAGE_CONTAINER;<br>    dwResult := WNetOpenEnum(dwScope, dwType, dwUsage, lpnr, hEnum);<br>    if dwResult <> NO_ERROR then Exit;<br>    GetMem(nrArray, cbBuffer);<br>    repeat<br>    dwResultEnum := WNetEnumResource(hEnum, cEntries, nrArray, cbBuffer);<br>    if dwResultEnum = NO_ERROR then<br>    for i := 0 to cEntries-1 do<br>    begin<br>    NewItem := TNetworkItem.Create;<br>    case nrArray[i].dwScope of<br>    RESOURCE_CONNECTED: NewItem.FScope := nsConnected;<br>    RESOURCE_GLOBALNET: NewItem.FScope := nsGlobal;<br>    RESOURCE_REMEMBERED: NewItem.FScope := nsRemembered;<br>    RESOURCE_CONTEXT: NewItem.FScope := nsContext;<br>    else<br>    NewItem.FScope := nsGlobal;<br>    end;<br>    case nrArray[i].dwType of<br>    RESOURCETYPE_ANY: NewItem.FResourceType := nrAny;<br>    RESOURCETYPE_DISK: NewItem.FResourceType := nrDisk;<br>    RESOURCETYPE_PRINT: NewItem.FResourceType := nrPrint;<br>    else<br>    NewItem.FResourceType := nrAny;<br>    end;<br>    case nrArray[i].dwDisplayType of<br>    RESOURCEDISPLAYTYPE_GENERIC: NewItem.FDisplay := ndGeneric;<br>    RESOURCEDISPLAYTYPE_DOMAIN: NewItem.FDisplay := ndDomain;<br>    RESOURCEDISPLAYTYPE_SERVER: NewItem.FDisplay := ndServer;<br>    RESOURCEDISPLAYTYPE_SHARE: NewItem.FDisplay := ndShare;<br>    RESOURCEDISPLAYTYPE_FILE: NewItem.FDisplay := ndFile;<br>    RESOURCEDISPLAYTYPE_GROUP: NewItem.FDisplay := ndGroup;<br>    RESOURCEDISPLAYTYPE_NETWORK: NewItem.FDisplay := ndNetwork;<br>    RESOURCEDISPLAYTYPE_ROOT: NewItem.FDisplay := ndRoot;<br>    RESOURCEDISPLAYTYPE_SHAREADMIN: NewItem.FDisplay :=<br>    ndShareAdmin;<br>    RESOURCEDISPLAYTYPE_DIRECTORY: NewItem.FDisplay :=<br>    ndDirectory;<br>    RESOURCEDISPLAYTYPE_TREE: NewItem.FDisplay := ndTree;<br>    RESOURCEDISPLAYTYPE_NDSCONTAINER: NewItem.FDisplay :=<br>    ndNDSContainer;<br>    else<br>    NewItem.FDisplay := ndGeneric;<br>    end;<br>    NewItem.FUsage := [];<br>    if nrArray[i].dwUsage and RESOURCEUSAGE_CONNECTABLE <> 0 then<br>    Include(NewItem.FUsage, nuConnectable);<br>    if nrArray[i].dwUsage and RESOURCEUSAGE_CONTAINER <> 0 then<br>    Include(NewItem.FUsage, nuContainer);<br>    NewItem.FLocalName := StrPas(nrArray[i].lpLocalName);<br>    NewItem.FRemoteName := StrPas(nrArray[i].lpRemoteName);<br>    NewItem.FComment := StrPas(nrArray[i].lpComment);<br>    NewItem.FProvider := StrPas(nrArray[i].lpProvider);<br>    NetItems.Add(NewItem);<br>    // if container, call recursively<br>    if (nuContainer in NewItem.FUsage) and (FScope <> nsContext) then<br>    EnumerateNet(NewItem.FSubItems, @nrArray[i])<br>    end;<br>    until dwResultEnum = ERROR_NO_MORE_ITEMS;<br>    FreeMem(nrArray);<br>    WNetCloseEnum(hEnum);<br>    end;<br>    procedure TNetworkBrowser.Refresh;<br>    begin<br>    FItems.Clear;<br>    if FActive then<br>    EnumerateNet(FItems, nil);<br>    end;<br>    procedure TNetworkBrowser.SetActive(Value: Boolean);<br>    begin<br>    if Value <> FActive then<br>    begin<br>    FActive := Value;<br>    Refresh;<br>    end;<br>    end;<br>    procedure TNetworkBrowser.SetScope(Value: TNetScope);<br>    begin<br>    if Value <> FScope then<br>    begin<br>    FScope := Value;<br>    Refresh;<br>    end;<br>    end;<br>    procedure TNetworkBrowser.SetResourceType(Value: TNetResourceType);<br>    begin<br>    if Value <> FResourceType then<br>    begin<br>    FResourceType := Value;<br>    Refresh;<br>    end;<br>    end;<br>    procedure TNetworkBrowser.SetUsage(Value: TNetUsage);<br>    begin<br>    if Value <> FUsage then<br>    begin<br>    FUsage := Value;<br>    Refresh;<br>    end;<br>    end;<br>    procedure TNetworkBrowser.Open;<br>    begin<br>    Active := True;<br>    end;<br>    procedure TNetworkBrowser.Close;<br>    begin<br>    Active := False;<br>    end;<br>    end.<br>    </td>  </tr></table><p align="center"> </p></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -