AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Alle Arbeitsgruppen, alle Rechner und dann alle freigaben?
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Arbeitsgruppen, alle Rechner und dann alle freigaben?

Ein Thema von Zerolith · begonnen am 12. Jun 2003 · letzter Beitrag vom 6. Aug 2003
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von webhuhn
webhuhn

Registriert seit: 4. Mär 2003
8 Beiträge
 
Delphi 6 Personal
 
#21

Re: Alle Arbeitsgruppen, alle Rechner und dann alle freigabe

  Alt 5. Aug 2003, 15:09
das is alles O.o

mehr brauchts dazu net?
oder muss ich das in den alte code einfügen?

achja:und wenn das alles is: tuts das unter win9x/2000/XP?
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#22

Re: Alle Arbeitsgruppen, alle Rechner und dann alle freigabe

  Alt 5. Aug 2003, 15:17
@Assarbad: Dein Source ist für den C++ Builder? Damit kann Delphi doch nix anfangen, oder?

@webhuhn: Ich bezog mich auf die erste Seite dieser Diskussion. Da hatte ich den Code gepostet. Schaue da noch mal nach, Du musst nur noch die uses ergänzen, bis er nicht mehr meckert.

Gehen sollte es unter allen Systemen.
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Benutzerbild von webhuhn
webhuhn

Registriert seit: 4. Mär 2003
8 Beiträge
 
Delphi 6 Personal
 
#23

Re: Alle Arbeitsgruppen, alle Rechner und dann alle freigabe

  Alt 5. Aug 2003, 15:24
achso, danke

dass es unter allen systeme läuft wäre gut ,weil das, was ich im moment hab tuts unter Win9X irgendwie net..


edit:
mhh.. der meckert

welche uses muss ich ergänzen?
ShellApi hab ich ergänz aber funktionieren tuts net
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#24

Re: Alle Arbeitsgruppen, alle Rechner und dann alle freigabe

  Alt 5. Aug 2003, 15:29
so sollte es tun (aber jetzt nicht getestet):
Delphi-Quellcode:
unit Unit1;

interface

uses Windows;

implementation

function RechnerInWG(lpnr: PNetResource): Boolean;

procedure AddComputerToList(Value: TNetResource);
var strRemoteName: String;
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))
       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;

end.
Aber Achtung! Bei großen Netzwerken kann das eine Weile dauern.
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Benutzerbild von webhuhn
webhuhn

Registriert seit: 4. Mär 2003
8 Beiträge
 
Delphi 6 Personal
 
#25

Re: Alle Arbeitsgruppen, alle Rechner und dann alle freigabe

  Alt 5. Aug 2003, 15:35
erstmal danke

aber warum meckert er da :

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

[Error] Unit1.pas(30): Undeclared identifier: 'ListBox'
[Error] Unit1.pas(30): Missing operator or semicolon
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

?

thx 4 hlp
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#26

Re: Alle Arbeitsgruppen, alle Rechner und dann alle freigabe

  Alt 5. Aug 2003, 15:37
Das ist die Listbox, die die Routine befüllen will. Die musst Du natürlich angeben, also z.B.:
Form1.ListBox1.Items.Add(strRemoteName);
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Benutzerbild von webhuhn
webhuhn

Registriert seit: 4. Mär 2003
8 Beiträge
 
Delphi 6 Personal
 
#27

Re: Alle Arbeitsgruppen, alle Rechner und dann alle freigabe

  Alt 5. Aug 2003, 15:42
hatte mich einfach vertippt

sry

tuts jetzt, danke nochmal

#edit:

auch auf 98

BIG THX
  Mit Zitat antworten Zitat
Benutzerbild von webhuhn
webhuhn

Registriert seit: 4. Mär 2003
8 Beiträge
 
Delphi 6 Personal
 
#28

Re: Alle Arbeitsgruppen, alle Rechner und dann alle freigabe

  Alt 5. Aug 2003, 16:40
hi

ich bins ( schon wieder ;D )

gibt es auch eine möglichkeit den Progress des Rechnersuchens mit ner Progressbar darzustellen?

thx 4 hlp
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#29

Re: Alle Arbeitsgruppen, alle Rechner und dann alle freigabe

  Alt 6. Aug 2003, 08:17
Zitat von webhuhn:
gibt es auch eine möglichkeit den Progress des Rechnersuchens mit ner Progressbar darzustellen?
Nicht das ich wüßte. Die Funktion ruft sich selbst solange auf, bis Windows keine Daten mehr bereit stellt. Nicht ohne Grund zeigt Windows, wenn man in die Netzwerkumgebung geht, nur die Eieruhr...
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
MikeS

Registriert seit: 3. Mai 2003
Ort: München
157 Beiträge
 
Delphi 7 Professional
 
#30

Re: Alle Arbeitsgruppen, alle Rechner und dann alle freigabe

  Alt 6. Aug 2003, 08:44
Moin!
werden auch Rechner mit Linux aufgelistet??
Mike Schröder
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:41 Uhr.
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