Supportnet Computer
Planet of Tech

Supportnet / Forum / NW-Sonstiges

Programm zum Netzwerk auslesen





Frage

Hallo, ich habe eine kleine Anwendung geschrieben,die alle Computernamen im Netzwerk ermittelt. (Das sollte sie zumindest) Aber es funktioniert bei mir nicht immer. Vielleicht könnte es mal jemand testen,der zu Hause ein Netzwerk eingerichtet hat. Hier der Link für das Programm: http://rapidshare.com/files/145835511/Netzwerk.exe Wäre mir echt eine große Hilfe!! Gruß Paul

Antwort 1 von jacko

paul-chen man sollte einen teufel tun und exe dateien unbekannter herkunft auf dem pc zu laden und auszuführen, oder?

das gilt auch umgekehrt.

vllt stellt du ja den quellcode hier rein und wir entwickeln weiter

Antwort 2 von Paul93

Hallo Jacko.
Ok,wie du meinst.
Hier ist der Code.

type
PNetResourceArray = ^TNetResourceArray;
TNetResourceArray = array[0..100] of TNetResource;

function CreateNetResourceList(ResourceType: DWord;
NetResource: PNetResource;
out Entries: DWord;
out List: PNetResourceArray): Boolean;
var
EnumHandle: THandle;
BufSize: DWord;
Res: DWord;
begin
Result := False;
List := Nil;
Entries := 0;
if WNetOpenEnum(RESOURCE_GLOBALNET,
ResourceType,
0,
NetResource,
EnumHandle) = NO_ERROR then begin
try
BufSize := $4000; // 16 kByte
GetMem(List, BufSize);
try
repeat
Entries := DWord(-1);
FillChar(List^, BufSize, 0);
Res := WNetEnumResource(EnumHandle, Entries, List, BufSize);
if Res = ERROR_MORE_DATA then
begin
ReAllocMem(List, BufSize);
end;
until Res <> ERROR_MORE_DATA;

Result := Res = NO_ERROR;
if not Result then
begin
FreeMem(List);
List := Nil;
Entries := 0;
end;
except
FreeMem(List);
raise;
end;
finally
WNetCloseEnum(EnumHandle);
end;
end;
end;

procedure ScanNetworkResources(ResourceType, DisplayType: DWord; List: TStrings);

procedure ScanLevel(NetResource: PNetResource);
var
Entries: DWord;
NetResourceList: PNetResourceArray;
i: Integer;
begin
if CreateNetResourceList(ResourceType, NetResource, Entries, NetResourceList) then try
for i := 0 to Integer(Entries) - 1 do
begin
if (DisplayType = RESOURCEDISPLAYTYPE_GENERIC) or
(NetResourceList.dwDisplayType = DisplayType) then begin
List.AddObject(NetResourceList.lpRemoteName,
Pointer(NetResourceList.dwDisplayType));
end;
if (NetResourceList.dwUsage and RESOURCEUSAGE_CONTAINER) <> 0 then
ScanLevel(@NetResourceList);
end;
finally
FreeMem(NetResourceList);
end;
end;

begin
ScanLevel(Nil);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ScanNetworkResources(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SERVER, ListBox1.Items);
end;

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: