Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Alle Arbeitsgruppen, alle Rechner und dann alle freigaben? (https://www.delphipraxis.net/5604-alle-arbeitsgruppen-alle-rechner-und-dann-alle-freigaben.html)

Zerolith 12. Jun 2003 18:15


Alle Arbeitsgruppen, alle Rechner und dann alle freigaben?
 
Hallo!

also ich möchte mit Hellwalker gern ein Programm schreiben dass
das NEtzwerk nach Arbeitsgruppen durchsucht, dann alle Rechner finded und schließlich alle Freigaben aufließtet.

Dass ich am Ende alle Rechner-Freigaben nach Dateien Durchstöbern kann.

Meines Wissens müsste dass ja mit ein paar API Befehlen möglich sein... bräuchte ein hinweiße des Handlings - Theoretisch funktionierts ja - hab au kein problem mit rekursiver Programmierung. Lediglich happerts bei mir an der Geringen API kenntnis.

also - bin gespannt auf Antworten

thx

Christian Seehase 12. Jun 2003 18:28

Moin Zerolith,

da kommen für Dich wohl am ehesten die Funktionen WNetOpenEnum, WNetEnumResource und WNetCloseEnum in Frage.

Eigentlich müsstest Du zu denen hier auch Beispiele finden.

Zerolith 12. Jun 2003 19:55

aha ? :shock:

:|

kein plan - -n paar bespiele - find nix passendes mit der boardsuche...
schau mal morgen

was is ne gute Quelle?

MSDN? PSDK? DelphiHilfe?

Chewie 12. Jun 2003 20:10

Zitat:

Zitat von Zerolith
was is ne gute Quelle?

MSDN? PSDK? DelphiHilfe?

Die ersten beiden, das PSDK ist ja eh komplett im MDSN enthalten.

Suche im Forum: Schau mal hier.

fossi3 12. Jun 2003 20:23

Was ist Hellwalker?
Noch nie gehört!

Christian Seehase 12. Jun 2003 20:26

Moin fossi,

Zitat:

Zitat von fossi3
Was ist Hellwalker?

ein User des Forums ;-)

Zerolith 13. Jun 2003 08:34

Thx @ Christian

werd mir das mal zu gemüte führen

cya

Mario 13. Jun 2003 08:37

Hier mal als Basis:
Delphi-Quellcode:
function TThreadGetComputer.RechnerInWG(lpnr: PNetResource): Boolean;

 procedure AddComputerToList(Value: TNetResource);
 begin
   strRemoteName := Value.lpRemoteName;
   if Value.dwDisplayType <> RESOURCEDISPLAYTYPE_SERVER THEN Exit;
   ListBox.Items.Add(strRemoteName);
 end;

const
 // RESOURCE_CONNECTED RESOURCE_CONTEXT RESOURCE_GLOBALNET RESOURCE_REMEMBERED
 c_dwScope = RESOURCE_GLOBALNET;
 // RESOURCETYPE_ANY RESOURCETYPE_DISK RESOURCETYPE_PRINT
 c_dwType = RESOURCETYPE_DISK;

var cbBuffer: DWORD;
    hEnum, dwResult, dwResultEnum : DWORD;
    lpnrLocal : array [0..16384 div SizeOf(TNetResource)] of TNetResource;
    i : Integer;
    cEntries : Longint;
begin

//
// basiert auf Microsoft Beispiel "Enumerating Network Resources" in C++
//
// [url]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wnet/networks_77sj.asp[/url]
//

 cbBuffer := 16384;
 centries := -1;
 dwResult := WNetOpenEnum( c_dwScope,
                           c_dwType,
                           0, // 0 = All resources
                           lpnr,
                           hEnum);

 if dwResult <> NO_ERROR
  then
   begin
    Result := False;
    // Fehlerbehandlung('Fehler bei WNetOpenEnum (%d)',[dwResult]);
    Exit;
   end;

 FillChar( lpnrLocal, cbBuffer, 0 );

 dwResultEnum := WNetEnumResource(hEnum,
                                  DWORD(cEntries),
                                  @lpnrLocal,
                                  cbBuffer);

 if dwResultEnum = NO_ERROR
  then
   begin // dwResultEnum = NO_ERROR
    for i := 0 to cEntries - 1 do
     begin
      AddComputerToList(lpnrLocal[i]);
      if (c_dwScope = RESOURCE_GLOBALNET) AND
         (RESOURCEUSAGE_CONTAINER = (lpnrLocal[i].dwUsage AND RESOURCEUSAGE_CONTAINER)) AND
         (Not Terminated)
       then RechnerInWG(@lpnrLocal[i]);
     end;
   end // dwResultEnum = NO_ERROR
  else
   begin // dwResultEnum <> NO_ERROR
    IF dwResultEnum <> ERROR_NO_MORE_ITEMS
     THEN
      begin
       Result := False;
       // Fehlerbehandlung (Format('Fehler bei WNetEnumResource (%d)',[dwResultEnum]));
       Exit;
      end;
   end; // dwResultEnum <> NO_ERROR

 dwResult := WNetCloseEnum(hEnum);

 if dwResult <> NO_ERROR
  then
   begin
    Result := False;
    // Fehlerbehandlung (Format('Fehler bei WNetCloseEnum (%d)',[dwResult]));
    Exit;
   end;

 Result := True;
end;
Dieser Code listet alle Rechner im Netz auf.

Zerolith 13. Jun 2003 10:10

ehm - was muss ich der Funktion übergeben?

Mario 13. Jun 2003 10:13

NIL


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr.
Seite 1 von 4  1 23     Letzte »    

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