Mem(Buf1, BufSize); //申请内存,用于获取工作组信息 List := TList.Create; try Res := WNetEnumResource(lphEnum, Count, Pointer(Buf1), BufSize); if (Res = ERROR_NO_MORE_ITEMS) or (Res <> NO_ERROR) then Exit; //资源列举完毕 或者 执行失败 P := Buf1; for I := 0 to Count - 1 do begin List.Add(p); Inc(P); end; Res := WNetCloseEnum(lphEnum); //关闭一次列举 if Res <> NO_ERROR then exit; for I := 0 to List.Count -1 do begin NetResource := TNetResource(List.Items[I]^); Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_CONTAINER, @NetResource, lphEnum); if Res <> NO_ERROR then break; //执行失败 Names.Clear; while True do begin Count := $FFFFFFFF; //不限资源数目 GetMem(Buf2, BufSize); //申请内存,用于获取工作组信息 try Res := WNetEnumResource(lphEnum, Count, Pointer(Buf2), BufSize); //获取一个网络类型的文件资源信息 if (Res = ERROR_NO_MORE_ITEMS) or (Res <> NO_ERROR) then Break; //资源列举完毕 或者 执行失败 P := Buf2; for J := 0 to Count - 1 do //列举各个工作组的信息 begin Names.Add(P^.lpRemoteName); Inc(P); end; finally FreeMem(Buf2, BufSize); end; end; end; finally FreeMem(Buf1, BufSize); List.Free; end; end;
procedure GetComputerNameList(GroupName: string;Names: TStrings); var NetResource: TNetResource; P: ^TNetResource; lphEnum: THandle; Buf1: Pointer; Count, BufSize, Res: DWORD; I: Integer; begin FillChar(NetResource, SizeOf(NetResource), 0); //初始化网络层次信息 NetResource.lpRemoteName := @GroupName[1]; //指定工作组名称 NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER; //类型为服务器(工作组) NetResource.dwUsage := RESOURCEUSAGE_CONTAINER; NetResource.dwScope := RESOURCETYPE_DISK; //列举文件资源信息 //获取指定工作组的网络资源句柄 Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_CONTAINER, @NetResource, lphEnum); if Res <> NO_ERROR then Exit; //执行失败 Names.Clear; while True do //列举指定工作组的网络资源 begin Count := $FFFFFFFF; //不限资源数目 BufSize := 8192; //缓冲区大小设置为8K GetMem(Buf1, BufSize); //申请内存,用于获取工作组信息 try Res := WNetEnumResource(lphEnum, Count, Pointer(Buf1), BufSize); if Res = ERROR_NO_MORE_ITEMS then break; //资源列举完毕 if (Res <> NO_ERROR) then Exit; //执行失败 P := Buf1; for I := 0 to Count - 1 do //列举工作组的计算机名称 begin Names.Add(P^.lpRemoteName + 2); Inc(P); end; finally FreeMem(Buf1); end; end; end;
end.
unit MainFrm;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ImgList, StdCtrls, ExtCtrls, ComCtrls, ToolWin, Menus, ActnList, TrayIcon;
type TMainForm = class(TForm) StatusBar1: TStatusBar; ToolBar1: TToolBar; ToolButton1: TToolButton; ToolButton2: TToolButton; TreeImageList: TImageList; Panel1: TPanel; Panel2: TPanel; gbxTraffic: TGroupBox; bvlTraffic: TBevel; lvTraffic: TListView; gbxShares: TGroupBox; gbxSessions: TGroupBox; bvlSessions: TBevel; lvSessions: TListView; pmShare: TPopupMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; pmSession: TPopupMenu; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; Splitter1: TSplitter; PnlMsg: TPanel; Splitter2: TSplitter; Splitter3: TSplitter; PnlClnt: TPanel; PnlClntTop: TPanel; PnlClntBtm: TPanel; BtnOk: TButton; BtnClose: TButton; GroupBox1: TGroupBox; MemoContents: TMemo; Splitter4: TSplitter; GroupBox2: TGroupBox; Label1: TLabel; EdToName: TEdit; Label2: TLabel; EdFrom: TEdit; Panel3: TPanel; TvComputer: TTreeView; pmTraffic: TPopupMenu; N8: TMenuItem; ActionList1: TActionList; ShareRefreshAction: TAction; ShareCloseAction: TAction; ShareAddAction: TAction; SessionRefreshAction: TAction; SessionCloseAction: TAction; NetImageList: TImageList; TrafficRefreshAction: TAction; Bevel1: TBevel; LvShares: TListView; Timer1: TTimer; FileRefreshAction: TAction; FileCloseAction: TAction; pmFiles: TPopupMenu; N9: TMenuItem; N10: TMenuItem; N11: TMenuItem; Splitter6: TSplitter; GroupBox3: TGroupBox; Bevel2: TBevel; LvFiles: TListView; N12: TMenuItem; N13: TMenuItem; N14: TMenuItem; N15: TMenuItem; pmTree: TPopupMenu; N16: TMenuItem; PopupMenu1: TPopupMenu; N17: TMenuItem; N18: TMenuItem; N19: TMenuItem; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormActivate(Sender: TObject); procedure TvComputerClick(Sender: TObject); procedure BtnCloseClick(Sender: TObject); procedure BtnOkClick(Sender: TObject); procedure EdToNameChange(Sender: TObject); procedure ShareRefreshActionExecute(Sender: TObject); procedure ShareCloseActionExecute(Sender: TObject); procedure LvSharesMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ShareAddActionExecute(Sender: TObject); procedure SessionRefreshActionExecute(Sender: TObject); procedure SessionCloseActionExecute(Sender: TObject); procedure TrafficRefreshActionExecute(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormShow(Sender: TObject); procedure FileRefreshActionExecute(Sender: TObject); procedure lvSessionsMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure LvFilesMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FileCloseActionExecute(Sender: TObject); procedure N13Click(Sender: TObject); procedure N15Clic 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >> 没有相关教程
|