
10.12.2010, 09:15
|
 |
Let Me Show You
|
|
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
|
|
очень давно (судя по дате NetRes.res 1999г.) что-то похожее писал http://data.cod.ru/79106
основной момент
Код:
...
function Tfrm.EnumerateFunc(NetResource: PNetResource): boolean;
type
PNetResourceArray=^TNetResourceArray;
TNetResourceArray=array[0..MaxInt div SizeOf(TNetResource) - 1] of TNetResource;
var
NetResult: integer;
NetHandle: THandle;
NetResources: PNetResourceArray;
BufSize: dword;
Count, Size: dword;
i: integer;
NR: TNetResource;
begin
result:=false;
NetResources:=nil;
BufSize:=0;
NetResult:=WNetOpenEnum(RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
0,
NetResource,
NetHandle);
Application.ProcessMessages;
if NetResult<>NO_ERROR then Exit;
try
BufSize:=1024*SizeOf(PNetResource);
GetMem(NetResources, BufSize);
while true do
begin
Count:=$0ffffffff;
Size:=BufSize;
NetResult:=WNetEnumResource(NetHandle,
Count,
NetResources,
Size);
if NetResult<>NO_ERROR then break;
for i:=0 to Count-1 do
begin
Application.ProcessMessages;
NR:=NetResources^[i];
AddTreeView(NR);
if RESOURCEUSAGE_CONTAINER=(NR.dwUsage and RESOURCEUSAGE_CONTAINER) then
EnumerateFunc(@NetResources[i]);
end;
end;
finally
FreeMem(NetResources, BufSize);
end;
WNetCloseEnum(NetHandle);
result:=true;
end;
...
__________________
Пишу программы за еду.
__________________
|