Veröffentlicht 10. Oktober 200123 j Ich habe ein problem mit Delphi auf allgemeine Netzwerksachen zu zugreifen z.B. wie bekomme ich alle Benutzer herraus die im Netz sind , wie kann ich auf ihre rechner zu greifen etc... wäre schön wenn mir einer helfen könnte :confused:
10. Oktober 200123 j Etwas genauer, bitte. <FONT COLOR="#a62a2a" SIZE="1">[ 10. Oktober 2001 12:27: Beitrag 1 mal editiert, zuletzt von littlepunkdog ]</font>
10. Oktober 200123 j na ich benötige für ein programm eine liste aller die sich im Netzwerk befinden es ist eigentlich egal ob das nun die IP oder der Name der Personen ist ... ich habe allerdings keine ahnung wie ich das eine noch das andere hin bekomme .. eine Funktion die einen Ping simuliert wäre nicht schlecht ...
11. Oktober 200123 j Wenn du Netzwerk"arbeit" erledigen willst, kommst du eigentlich nicht an den INDY-Komponenten vorbei. Und um rauszubekommen, welche IP's "aktiv" sind, versuche doch einfach, alle IP's in deinem Subnetz auf einem öffentlichen Port (21, 23, 80) zu connecten. greetings, DZ
16. Oktober 200123 j Moinsen! Hier ist mal ein Tip, wie du die Benutzer einer NT-Domain heraus kriegst <<click>> Und das hier <<click>> kannst du benutzen, um einen Computer von der Netzwerkumgebung auszuwählen! Ansonsten schau dir die anderen Seiten dort mal an, da findest du bestimmt das Passende! Bis denn dann!
20. Oktober 200123 j Also die Computernamen kriegt man ganz einfach raus: Schreib einfacdh ne Funktion, die Die folgenden Funktionen verwendet: WNetOpenEnum, WNetCloseEnum und WNetEnumResource. Ist allerdings ein riesiger Aufwand: ich post mal den Quelltext zur ermittlung aller Rechnernamen in allen Domains: Function GetComputerNames: TStringList; Var neh1, neh2, neh3: Cardinal; Count: Cardinal; x, y, z: Integer; net1, net2, net3: PNetResource; tmpnet1, tmpnet2, tmpnet3: PNetResource; netsize1, netsize2, netsize3: Cardinal; Begin Result := TStringList.Create; Try WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, 0, Nil, neh1); Try Count := $FFFFFFFF; NetSize1 := $FFFF; GetMem(Net1, NetSize1); Try While WNetEnumResource(neh1, Count, net1, netsize1) <> ERROR_NO_MORE_ITEMS Do Begin tmpnet1 := net1; If Count = 0 Then Break; For X := 0 To Count - 1 Do Begin WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, 0, tmpnet1, neh2); Try Count := $FFFFFFFF; NetSize2 := $FFFF; GetMem(Net2, NetSize2); Try While WNetEnumResource(neh2, Count, net2, netsize2) <> ERROR_NO_MORE_ITEMS Do Begin tmpnet2 := net2; If Count = 0 Then Break; For Y := 0 To Count - 1 Do Begin WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, 0, tmpnet2, neh3); Try Count := $FFFFFFFF; NetSize3 := $FFFF; GetMem(Net3, NetSize3); Try While WNetEnumResource(neh3, Count, net3, netsize3) <> ERROR_NO_MORE_ITEMS Do Begin tmpnet3 := net3; If Count = 0 Then Break; For Z := 0 To Count - 1 Do Begin Result.Add(String(tmpnet3^.lpRemoteName)); Inc(tmpnet3); End; End; Finally FreeMem(Net3); End; Finally WNetCloseEnum(neh3); End; Inc(tmpnet2); End; End; Finally FreeMem(Net2); End; Finally WNetCloseEnum(neh2); End; Inc(tmpnet1); End; End; Finally FreeMem(Net1); End; Finally WNetCloseEnum(neh1); End; Except On E: Exception Do Begin MessageDlg(E.ClassName + ': ' + E.Message, mtError, [mbOK], 0); Result.Free; Result := Nil; End; Rnd; End; Auf der Nächsten Verschachtelungsebene wrde dir das Programm dann alle Freigabenamen aller Rechner in Allen Domains von Allen Netzwerken zurückgeben ... Weitere Hilfe gibts bei den Funktionen die mit WNet anfangen in der Win32.hlp (Microsoft Programmer's Guide) ... dem wohl unbeliebtesten Schriftstück der Delphidoku???
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.