Delphi-PRAXiS

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

rollstuhlfahrer 28. Aug 2009 14:56

Re: Computer aus Netzwerk auslesen
 
Hallo,

1. List[ i ]:=copy(List[ i ],3, MaxInt) sollte schneller gehen, da man ja eh den kompletten Rest will (Hilfe beachten)
2. In dm Quellcode werden die Listeneinträge in Zeile 63 angelegt. Wenn du jetzt deinen einleitenden Code dahingehend umschreibst, dass er schon hier die ersten 2 Zeichen vergisst, dann musst du dich nicht mit weiteren Schleifen beschäftigen.

Bernhard

p80286 28. Aug 2009 15:04

Re: Computer aus Netzwerk auslesen
 
@rollstuhlfahrer:
Zitat:

1. List:=copy(List[i],3, [i]MaxInt)
ich denke Du hast Dich vertippt?
Delphi-Quellcode:
copy(List[i],3, MaxInt);
Gruß
K-H

rollstuhlfahrer 28. Aug 2009 15:32

Re: Computer aus Netzwerk auslesen
 
Sorry, hab nicht sonderlich darauf geachtet gehabt, dass die Schleifenvariable gleichzeitig auch noch ein BB-Code ist.

Bernhard

StoRmtec 28. Aug 2009 20:21

Re: Computer aus Netzwerk auslesen
 
Danke für die Antworten aber wo setze ich das jetzt ein beim Button.click oder beim scan??

Danke

Luckie 28. Aug 2009 21:38

Re: Computer aus Netzwerk auslesen
 
Hast du dir schon mal ein Grundlagentutorial angeguckt oder ein entsprechendes Buch gelesen?

Sir Rufo 29. Aug 2009 00:10

Re: Computer aus Netzwerk auslesen
 
Ich hätte da auch noch was:
Delphi-Quellcode:
StrReplace( '\\Computername', '\\', '', [ rfReplaceAll ] ) ergibt 'Computername'
cu

Oliver

DeddyH 29. Aug 2009 15:25

Re: Computer aus Netzwerk auslesen
 
Du meinst StringReplace ;)

Sir Rufo 29. Aug 2009 18:10

Re: Computer aus Netzwerk auslesen
 
Zitat:

Zitat von DeddyH
Du meinst StringReplace ;)

Na logen ... :mrgreen:

@daniel: können wir hier nicht auch das Code-Completion integrieren, dann passiert mir so ein Fehler nicht mehr

cu

oliver

Larsi 29. Aug 2009 18:39

Re: Computer aus Netzwerk auslesen
 
Oh, mein Code geht gar nicht richtig, p80286. Tut mir leid :(

DeddyH 30. Aug 2009 12:12

Re: Computer aus Netzwerk auslesen
 
Zitat:

Zitat von Larsi
Ich bin ein toller Programmierer...

:gruebel:

Larsi 30. Aug 2009 14:34

Re: Computer aus Netzwerk auslesen
 
Was gibts da nicht zu verstehen. Ist doch ein grammatisch vollkommen richtiger Satz?

Hobby-Programmierer 30. Aug 2009 16:09

Re: Computer aus Netzwerk auslesen
 
Zitat:

Zitat von Larsi
Was gibts da nicht zu verstehen. Ist doch ein grammatisch vollkommen richtiger Satz?

DeddyH hat sicher nicht den Satz an sich in Frage gestellt sondern dessen Wahrheitsgehalt :lol:
@Larsi: Du lässt wirklich kein Fettnäpfchen aus. Ich möchte nicht wissen wieviele User sich auf die Zunge gebissen, Tastaturen zerstört, PCs geschrottet haben, um ja nicht posten zu können :mrgreen:
Stell die gleiche These nochmal in K&T :cheer:

DeddyH 30. Aug 2009 16:10

Re: Computer aus Netzwerk auslesen
 
*No further comment* :zwinker: :lol:

Luckie 30. Aug 2009 16:19

Re: Computer aus Netzwerk auslesen
 
Also irgendwer von euch schuldet mir eine Schreibtischplatte; ich habe gerade ein Stück davon abgebissen. :roll:

BAMatze 31. Aug 2009 07:32

Re: Computer aus Netzwerk auslesen
 
Hallo und guten Morgen an alle, ließt diese Procedure eigentlich nur die regulär angemeldeten Rechner aus oder auch Rechner, die gerade dabei sind eine Verbindung herzustellen.
Hintergrund ist: Wohnune ja in einer Großstadt und hier sind natürlich 5-6 Netzwerke in meiner Reichweite, was natürlich auch bedeutet, dass mindestens soviele Rechner da sein müssten. Ich wollte jetzt gern mal überprüfen, da es sich bei meiner Wohngegend um einen "sozialen Brennpunkt" handelt, wo diejenigen auch nicht allzuviel auf die Rechte des anderen mit unter nehmen, ob eventuell sich jemand in mein Lan einwählen will. Habe in diesem temporär Verzeichnisse freigegeben für einen einfachen Datenaustausch zwischen meinen Rechnern und möchte nicht, dass jemand eventuell unbemerkt damit Schindluder treibt.

Vielen Dank
BAMatze


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:45 Uhr.

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