| Autor |
Beitrag |
O'rallY
      
Beiträge: 563
|
Verfasst: Mo 02.09.02 20:33
Ich bräuchte eine Funktion, die alle Computer, die mit dem Lokalen Netzwerk verbunden sind, aufzulisten. Ich könnte natürlich auch, wenn ich wüsste, das alle PC eine statische IP (z.B: 192.168.115.???), jeden einzelenen anpingen. Doch ist das ersten nicht immer der Fall und zweitens, gibt es da nicht eine einfachere Methode? 
_________________ .oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
|
|
bis11
      
Beiträge: 1247
Erhaltene Danke: 2
Apple Mac OSX 10.11
|
Verfasst: Di 03.09.02 09:02
Dieses Thema würde mich auch interessieren. 
|
|
Steffer
      
Beiträge: 299
|
Verfasst: Di 03.09.02 12:04
Geht mit WNetOpenEnum. Diese listet alle verfügbaren Netzwerk-Verbindungen auf. Geht auch unter NT/2000/XP
| Pit hat folgendes geschrieben: | 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84:
| 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[i].dwDisplayType = DisplayType) then begin List.AddObject(NetResourceList[i].lpRemoteName, Pointer(NetResourceList[i].dwDisplayType)); end; if (NetResourceList[i].dwUsage and RESOURCEUSAGE_CONTAINER) <> 0 then ScanLevel(@NetResourceList[i]); end; finally FreeMem(NetResourceList); end; end;
begin ScanLevel(Nil); end;
Procedure TForm1.Button1Click(Sender: TObject); var LB : TStringList; begin LB:= TStringList.Create; ScanNetworkResources(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SERVER, LB); Showmessage('Alle Rechner im Netz' + #10#13 + LB.Text); LB.Free; end; | |
Moderiert von Tino: Inhalt direkt eingefügt.
_________________ Keine Signatur ...
|
|
Jagg
      
Beiträge: 635
|
Verfasst: Do 20.11.03 20:36
Ich habe jetzt die Netzwerk PC's in einer ListBox aufgelistet
Wenn ich jetzt einen PC auswähle,soll eine Abfrage kommen ob ich den PC neu starten möchte oder nicht...wie kann ich jetzt den PC von meinem Rechner aus neu starten???
Jagg !
|
|
PheliX
      
Beiträge: 59
|
Verfasst: Di 25.11.03 15:24
Naja, wenn die PC's XP drauf haben schau mal hier!
Tschau!
|
|
PheliX
      
Beiträge: 59
|
Verfasst: Di 25.11.03 16:35
Schorry, falscher Thread
bis denn
|
|
lolol
Hält's aus hier
Beiträge: 5
Win2000
Delphi 6 Personal
|
Verfasst: Di 25.11.03 19:55
Hi!
Kann mir mal bitte einer den Sourcecode der Unit posten und mir sagen welche Elemete ich auf das Form ziehen muss?
Ich bin Anfänger, und würde das Gerne verstehen!!
Danke schonmal im Vorraus!!!
cu lolol
|
|
PheliX
      
Beiträge: 59
|
Verfasst: Di 25.11.03 20:55
Also:
Erstmal n Button drauf ziehn und dann:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
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; 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[i].dwDisplayType = DisplayType) then begin List.AddObject(NetResourceList[i].lpRemoteName, Pointer(NetResourceList[i].dwDisplayType)); end; if (NetResourceList[i].dwUsage and RESOURCEUSAGE_CONTAINER) <> 0 then ScanLevel(@NetResourceList[i]); end; finally FreeMem(NetResourceList); end; end;
begin ScanLevel(Nil); end;
Procedure TForm1.Button1Click(Sender: TObject); var LB : TStringList; begin LB:= TStringList.Create; ScanNetworkResources(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SERVER, LB); Showmessage('Alle Rechner im Netz' + #10#13 + LB.Text);
LB.Free; end;
end. |
Jetzt öffnet sich n MsgBox und er sagt dir die Rechner die connected sin!
Viel Spass
|
|
ixtreme
Gast
Erhaltene Danke: 1
|
Verfasst: Di 25.11.03 21:28
Hab den Code mit deinem Namen in XAR eingetragen, falls nicht erwünscht meld dich bitte mal...oki...
ixtreme.de
|
|
PheliX
      
Beiträge: 59
|
Verfasst: Mi 26.11.03 15:00
Öhhh... nur zu... was auch imma das sein mag?!?
|
|
|