delphi 获取计算机名称,Delphi 得到局域网内所有电脑的名称和IP地址

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, WinSock, StdCtrls;

type

TForm1 = class(TForm)

ListBox1: TListBox;

procedure FormCreate(Sender: TObject);

private

function GetServerList(List: TStringList): Boolean;

function GetUsers(const GroupName: String; List: TStringList): Boolean;

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.GetServerList(List: TStringList): Boolean;

type

TNetResourceArray = ^TNetResource; //网络类型的数组

var

NetResource: TNetResource;

Buf: Pointer;

Count, BufSize, Res: DWORD;

lphEnum: THandle;

p: TNetResourceArray;

i, j: SmallInt;

NetworkTypeList: TList;

begin

Result := False;

NetworkTypeList := TList.Create;

List.Clear;

//获取整个网络中的文件资源的句柄,lphEnum为返回名柄

Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,

RESOURCEUSAGE_CONTAINER, nil, lphEnum);

if Res <> NO_ERROR then Exit; //Raise Exception(Res);//执行失败

//获取整个网络中的网络类型信息

Count := $FFFFFFFF; //不限资源数目

BufSize := 8192; //缓冲区大小设置为8K

GetMem(Buf, BufSize); //申请内存,用于获取工作组信息

Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);

if (Res = ERROR_NO_MORE_ITEMS) //资源列举完毕

or (Res <> NO_ERROR) //执行失败

then Exit;

P := TNetResourceArray(Buf);

for I := 0 to Count - 1 do begin//记录各个网络类型的信息

NetworkTypeList.Add(p);

Inc(P);

end;

//WNetCloseEnum关闭一个列举句柄

Res := WNetCloseEnum(lphEnum); //关闭一次列举

if Res <> NO_ERROR then exit;

for J := 0 to NetworkTypeList.Count - 1 do begin//列出各个网络类型中的所有工作组名称

//列出一个网络类型中的所有工作组名称

NetResource := TNetResource(NetworkTypeList.Items[J]^); //网络类型信息

//获取某个网络类型的文件资源的句柄,NetResource为网络类型信息,lphEnum为返回名柄

Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,

RESOURCEUSAGE_CONTAINER, @NetResource, lphEnum);

if Res <> NO_ERROR then break; //执行失败

while true do begin//列举一个网络类型的所有工作组的信息

Count := $FFFFFFFF; //不限资源数目

BufSize := 8192; //缓冲区大小设置为8K

GetMem(Buf, BufSize); //申请内存,用于获取工作组信息

//获取一个网络类型的文件资源信息,

Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);

if (Res = ERROR_NO_MORE_ITEMS) //资源列举完毕

or (Res <> NO_ERROR)

//执行失败

then Break;

P := TNetResourceArray(Buf);

for I := 0 to Count - 1 do begin//列举各个工作组的信息

List.Add(StrPAS(P^.lpRemoteName)); //取得一个工作组的名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值