【delphi开源代码栏目提醒】:网学会员为广大网友收集整理了,frm_ComputerList.pas,希望对大家有所帮助!
unit frm_ComputerList;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ImgList, XPMan, ExtCtrls;
type
TNETRESOURCE = record
dwScope : DWORD;
dwType : DWORD;
dwDisplayType : DWORD;
dwUsage : DWORD;
lpLocalName : LPTSTR;
lpRemoteName : LPTSTR;
lpComment : LPTSTR;
lpProvider : LPTSTR;
end;
type TNetResourceArray = ^TNetResource;
type
TFrmGroupList = class(TForm)
BtnGroupList: TButton;
Image: TImageList;
GBxGroup: TGroupBox;
LVGroup: TListView;
BtnClose: TButton;
XPManifest1: TXPManifest;
GroupBox1: TGroupBox;
EdGroup: TEdit;
Label1: TLabel;
procedure BtnGroupListClick(Sender: TObject);
procedure BtnCloseClick(Sender: TObject);
private
procedure GetDomainList(const Group:string;ts:Tstrings);
{ Private declarations }
public
{ Public declarations }
end;
var
FrmGroupList: TFrmGroupList;
implementation
{$R *.dfm}
procedure TFrmGroupList.GetDomainList(const Group:string;ts:Tstrings);
var
GroupR: TNetResource;
NetHand:THandle;
BuffSize,Count:DWord;
Buffer:Pointer;
i:integer;
RB:TNetResourceArray;
bs:string;
begin
FillChar(GroupR,sizeof(TNetResource),0);
GroupR.dwScope := RESOURCE_GLOBALNET;
GroupR.dwType := RESOURCETYPE_DISK ;
GroupR.lpremoteName := Pchar(Group);
GroupR.dwDisplayType := RESOURCEDISPLAYTYPE_server;
GroupR.dwUsage := RESOURCEUSAGE_CONNECTABLE;
if WNetOpenEnum(RESOURCE_GLOBAL
NET,RESOURCETYPE_DISK,0,@GroupR,NetHand)<>NO_ERROR then
begin
ShowMessage('
网络列举失败.');
Exit;
end;
buffsize := sizeof(TNETRESOURCE)*1024;
Count := $FFFFFFFF;
GetMem(buffer,buffsize);
if WNetEnumResource(NetHand,Count,buffer,buffsize)= NO_ERROR then
begin
RB := TNetResourceArray(buffer);
For i := 0 to Count-1 do
begin
bs:=copy(RB^.lpRemoteName,0,strlen(RB^.lpRemoteName));
ts.Add(bs);
Inc(RB);
end;
end;
WNetCloseEnum(NetHand);
Dispose(buffer);
end;
procedure TFrmGroupList.BtnGroupListClick(Sender: TObject);
var
s:TStrings;
i:integer;
LI:TListItem;
begin
if Trim(EdGroup.Text)='' then
begin
showmessage('请输入
工作组名称!!');
Exit;
end;
S:=TStringList.Create;
GetDomainList(EdGroup.Text,S);
LVGroup.Clear;
for i:=0 to S.Count -1 do
begin
LI:= LVGroup.Items.Add;
Li.Caption:=S.Strings[i];
end;
li:=nil;
s.Free;
end;
procedure TFrmGroupList.BtnCloseClick(Sender: TObject);
begin
Close;
end;
end.