![]() |
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:
gebe das ganze dann in eine ChecklistBox aus nur ist bei der Ausgabe immer \\Computername
// --- 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 ------------------------------------------------ // jetzt würde ich gerne die \\ wegbekommen wie kann man das realisieren oder geht das überhaupt Danke MFG StoRmtec |
Re: Computer aus Netzwerk auslesen
Guck dir mal in der Hilfe die Funktion copy an.
|
Re: Computer aus Netzwerk auslesen
Hallo,
Guck dir mal in der Hilfe die Funktion Delete an. Gruß Question_mark |
Re: Computer aus Netzwerk auslesen
Warum das verstehe ich jetzt ehrlich gesagt nicht
Delphi-Quellcode:
so wird es ausgegeben wenn ihr das meint
procedure Tfrm_netz.btn_durchsuchenClick(Sender: TObject);
begin ScanNetworkResources(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SERVER, CheckListBox1.Items); end; |
Re: Computer aus Netzwerk auslesen
Du hast nicht wirklich in der Hilfe geguckt oder?
|
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 |
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.
|
Re: Computer aus Netzwerk auslesen
Zitat:
|
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??? |
Re: Computer aus Netzwerk auslesen
Hallo StormTec,
mit
Delphi-Quellcode:
holst Du dir Deine Daten.
procedure ScanNetworkResources(ResourceType, DisplayType: DWord; List: TStrings);
Die liegen dann ungefähr in folgender Form vor
Delphi-Quellcode:
hiermit kannst du dann die ausgegebenen Daten manipulieren:
//computer1
//computer2 ....
Delphi-Quellcode:
bei dem copy bin ich mir aber nicht sicher ob das so geht, ggf. auch hier mit einer Zwischenvariablen arbeiten.
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); Gruß K-H |
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 |
Re: Computer aus Netzwerk auslesen
@rollstuhlfahrer:
Zitat:
Delphi-Quellcode:
Gruß
copy(List[i],3, MaxInt);
K-H |
Re: Computer aus Netzwerk auslesen
Sorry, hab nicht sonderlich darauf geachtet gehabt, dass die Schleifenvariable gleichzeitig auch noch ein BB-Code ist.
Bernhard |
Re: Computer aus Netzwerk auslesen
Danke für die Antworten aber wo setze ich das jetzt ein beim Button.click oder beim scan??
Danke |
Re: Computer aus Netzwerk auslesen
Hast du dir schon mal ein Grundlagentutorial angeguckt oder ein entsprechendes Buch gelesen?
|
Re: Computer aus Netzwerk auslesen
Ich hätte da auch noch was:
Delphi-Quellcode:
cu
StrReplace( '\\Computername', '\\', '', [ rfReplaceAll ] ) ergibt 'Computername'
Oliver |
Re: Computer aus Netzwerk auslesen
Du meinst StringReplace ;)
|
Re: Computer aus Netzwerk auslesen
Zitat:
@daniel: können wir hier nicht auch das Code-Completion integrieren, dann passiert mir so ein Fehler nicht mehr cu oliver |
Re: Computer aus Netzwerk auslesen
Oh, mein Code geht gar nicht richtig, p80286. Tut mir leid :(
|
Re: Computer aus Netzwerk auslesen
Zitat:
|
Re: Computer aus Netzwerk auslesen
Was gibts da nicht zu verstehen. Ist doch ein grammatisch vollkommen richtiger Satz?
|
Re: Computer aus Netzwerk auslesen
Zitat:
@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: |
Re: Computer aus Netzwerk auslesen
*No further comment* :zwinker: :lol:
|
Re: Computer aus Netzwerk auslesen
Also irgendwer von euch schuldet mir eine Schreibtischplatte; ich habe gerade ein Stück davon abgebissen. :roll:
|
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