Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Computer aus Netzwerk auslesen (https://www.delphipraxis.net/139387-computer-aus-netzwerk-auslesen.html)

StoRmtec 27. Aug 2009 22:58


Computer aus Netzwerk auslesen
 
Hy@all

Ich habe hier schon die Routine gefunden das ich im Netz nach Computer scannen kann

hier ist der Code
Delphi-Quellcode:
// --- Netzwerk nach Computer durchsuchen -------------------------------------- //
type
  PNetResourceArray = ^TNetResourceArray;
  TNetResourceArray = array[0..100] of TNetResource;

function CreateNetResourceList(ResourceType: DWord;
                              NetResource: PNetResource;
                              out Entries: DWord;
                              out List: PNetResourceArray): Boolean;
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;
// --- Netzwerk durchsuchen ENDE ------------------------------------------------ //
gebe das ganze dann in eine ChecklistBox aus nur ist bei der Ausgabe immer \\Computername
jetzt würde ich gerne die \\ wegbekommen wie kann man das realisieren oder geht das
überhaupt

Danke

MFG
StoRmtec

Luckie 27. Aug 2009 23:04

Re: Computer aus Netzwerk auslesen
 
Guck dir mal in der Hilfe die Funktion copy an.

Question_mark 27. Aug 2009 23:09

Re: Computer aus Netzwerk auslesen
 
Hallo,

Guck dir mal in der Hilfe die Funktion Delete an.

Gruß

Question_mark

StoRmtec 27. Aug 2009 23:11

Re: Computer aus Netzwerk auslesen
 
Warum das verstehe ich jetzt ehrlich gesagt nicht

Delphi-Quellcode:
procedure Tfrm_netz.btn_durchsuchenClick(Sender: TObject);
begin
ScanNetworkResources(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SERVER, CheckListBox1.Items);
end;
so wird es ausgegeben wenn ihr das meint

Luckie 27. Aug 2009 23:14

Re: Computer aus Netzwerk auslesen
 
Du hast nicht wirklich in der Hilfe geguckt oder?

StoRmtec 28. Aug 2009 06:13

Re: Computer aus Netzwerk auslesen
 
Nein Habe ich nicht wenn ich ehrlich bin aber ich verstehe es auch nicht was das mit Copyzu tun hat.

Danke

DeddyH 28. Aug 2009 08:08

Re: Computer aus Netzwerk auslesen
 
Wie oben angedeutet, entweder mit Delete() die ersten beiden Zeichen löschen oder mit Copy() ab dem 3. Zeichen kopieren. Beides dürfte im Endeffekt das gewünschte Ergebnis liefern.

Luckie 28. Aug 2009 12:02

Re: Computer aus Netzwerk auslesen
 
Zitat:

Zitat von StoRmtec
Nein Habe ich nicht wenn ich ehrlich bin aber ich verstehe es auch nicht was das mit Copyzu tun hat.

Dann tue das mal, dann verstehst du auch den Zusammenhang.

StoRmtec 28. Aug 2009 14:07

Re: Computer aus Netzwerk auslesen
 
Hallo
Kenne mich zwar immer noch nicht aus wie ihr das meint mit dem delet oder copy weil ich sehe ja da überhaupt nicht die ausgabe???

p80286 28. Aug 2009 14:15

Re: Computer aus Netzwerk auslesen
 
Hallo StormTec,

mit
Delphi-Quellcode:
procedure ScanNetworkResources(ResourceType, DisplayType: DWord; List: TStrings);
holst Du dir Deine Daten.
Die liegen dann ungefähr in folgender Form vor
Delphi-Quellcode:
//computer1
//computer2
....
hiermit kannst du dann die ausgegebenen Daten manipulieren:
Delphi-Quellcode:
for i:=0 to List.count-1 do begin
  dummy:=list[i];
  delete(dummy,1,2);
  list[i]:=dummy;
end;

oder
  List[i]:=copy(List[i],3,length(list[i])-2);
bei dem copy bin ich mir aber nicht sicher ob das so geht, ggf. auch hier mit einer Zwischenvariablen arbeiten.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz