Не работает перечисление компьютеров сети. Проводник свободно видит и работает с соседним компом, тот тоже.
Даже клиент-серверная прога ведёт обмен по TServerSocket и TClientSocket. А список компов сети получить не могу.
unit PForm;
interface
uses Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls;
const MAX_RES = 1000;
type
TMain = class(TForm)
LB: TListBox;
Start: TButton;
procedure StartClick(Sender: TObject);
private
procedure NetEnumResources(Root: PNetResource);
end;
TNetEnumResourcesCallback = procedure(NetResource: TNetResource);
PResources = ^TResources;
TResources = array[0 .. MAX_RES-1] of TNetResource;
var Main: TMain;
implementation {$R *.dfm}
procedure TMain.StartClick(Sender: TObject);
begin
NetEnumResources(nil);
LB.AddItem('stop', nil);
end;
procedure TMain.NetEnumResources(Root: PNetResource);
var
hEnum: THandle;
Count,
BufferSize,
Res: dword;
Resources: PResources;
i: Integer;
begin
Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, Root, hEnum);
if NO_ERROR <> Res then exit;
BufferSize := SizeOf(TResources);
GetMem(Resources, BufferSize);
while True do begin
Count := MAX_RES;
Res := WNetEnumResource(hEnum, Count, Resources, BufferSize);
if (Res <> NO_ERROR) and (Res <> ERROR_MORE_DATA) then break;
for i := 0 to Count - 1 do begin
with Resources^[i] do LB.AddItem('Local Name: ' + lpLocalName + ', ' + 'Remote Name: ' + lpRemoteName + ', ' + lpComment, nil);
if (Resources^[i].dwUsage and RESOURCEUSAGE_CONTAINER) <> 0 then NetEnumResources(@(Resources^[i]));
end;
end;
FreeMem(Resources);
WNetCloseEnum(hEnum);
LB.AddItem('end', nil);
end;
end.
Может у кого есть рабочий код?