delphi查找同一内网所有主机


本文整理自网络,侵删。

 delphi查找同一内网所有主机



unit FindComp;

interface

uses
Windows, Classes;

function FindComputers: DWORD;

var
Computers: TStringList;

implementation

uses
SysUtils;

const
MaxEntries = 250;

function FindComputers: DWORD;

var
EnumWorkGroupHandle,
EnumComputerHandle : THandle;
EnumError : DWORD;
Network : TNetResource;
WorkGroupEntries,
ComputerEntries : DWORD;
EnumWorkGroupBuffer,
EnumComputerBuffer : array[1..MaxEntries] of
TNetResource;
EnumBufferLength : DWORD;
I, J : DWORD;

begin

Computers.Clear;

FillChar(Network, SizeOf(Network), 0);
with Network do
begin
dwScope := RESOURCE_GLOBALNET;
dwType := RESOURCETYPE_ANY;
dwUsage := RESOURCEUSAGE_CONTAINER;
end;

EnumError := WNetOpenEnum(RESOURCE_GLOBALNET,
RESOURCETYPE_ANY, 0,
@Network,
EnumWorkGroupHandle);

if EnumError = NO_ERROR then
begin
WorkGroupEntries := MaxEntries;
EnumBufferLength := SizeOf(EnumWorkGroupBuffer);
EnumError := WNetEnumResource(EnumWorkGroupHandle,
WorkGroupEntries,
@EnumWorkGroupBuffer,
EnumBufferLength);

if EnumError = NO_ERROR then
begin
for I := 1 to WorkGroupEntries do
begin
EnumError := WNetOpenEnum(RESOURCE_GLOBALNET,
RESOURCETYPE_ANY, 0,
@EnumWorkGroupBuffer[I],
EnumComputerHandle);
if EnumError = NO_ERROR then
begin
ComputerEntries := MaxEntries;
EnumBufferLength:= SizeOf(EnumComputerBuffer);
EnumError:=WNetEnumResource(EnumComputerHandle,
ComputerEntries,
@EnumComputerBuffer,
EnumBufferLength);
if EnumError = NO_ERROR then
for J := 1 to ComputerEntries do
Computers.Add(Copy(EnumComputerBuffer[J].
lpRemoteName, 3,
Length(EnumComputerBuffer[J].
lpRemoteName) - 2));
WNetCloseEnum(EnumComputerHandle);
end;
end;
end;
WNetCloseEnum(EnumWorkGroupHandle);
end;

if EnumError = ERROR_NO_MORE_ITEMS then
EnumError := NO_ERROR;
Result := EnumError;

end;

initialization

Computers := TStringList.Create;

finalization

Computers.Free;

end.

相关阅读 >>

Delphi uhttp_flood

Delphi发送邮件―中文显示为乱码解决

Delphi console程序中一种定时方法

Delphi读取utf8格式ini及取得动态�热�

Delphi [android]获取屏幕的物理分辨率

Delphi在postgresql中读写二进制数据

Delphi android 中 toast 的实现(老外写的unit)

Delphi tlistview按指定列排序

Delphi 最简单的升级下载代码

Delphi listbox1列表随机打乱

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...