Announcement

Collapse
No announcement yet.

Netzwerkumgebung anzeigen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Netzwerkumgebung anzeigen

    Hallo,
    mit welchen APIs kann ich die Netzwerkumgebung von Win95/98 auslesen ? (vorhandene Rechner in Arbeitsgruppen, Freigaben etc. ...)
    Soll später zur Generierung eines Instant Messengers bzw. einer Buddy-Liste dienen. Ich habe bisher nur etwas über einen LAN-Manager gefunden, der aber lt. Aussage der Online-Hilfe nicht zum Funktionsumfang der 'normalen' Win-APIs gehört.
    Hat jemand da vielleicht mal einen Tipp für mich ?

    Danke schon im voraus, Sven M.

    [der Beitrag wurde schon Anfang April in dieses Forum gestellt, bisher erhielt ich allerdings keine Antwort ... und da die meisten Leute nur die 'neuen' Beiträge lesen ...]

  • #2
    Hallo,

    das folgende Beispiel stellt alle Domänen und die zugeordneten Rechner in einem TTreeView dar:
    <pre>
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    FPCCount := 0;
    LoadNetNode(nil,nil);
    StatBar.Panels[0].Text := Format('%d Objekte', [FPCCount]);
    end;
    {-------------------------------------------------------------}
    { Private Methoden }
    {-------------------------------------------------------------}
    procedure TForm1.LoadNetNode(TreeNode: TTreeNode; pNetNode: PNetResourceA);
    var
    hEnum : THandle;
    dwCount : DWORD;
    dwBufSize : DWORD;
    pNR, pBuf : PNetResourceA;
    dwRet : DWORD;
    ChildNode : TTreeNode;
    begin
    dwRet := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0,
    pNetNode, hEnum);
    if dwRet <> NO_ERROR then
    Exit;
    dwBufSize := 1000;
    GetMem(pBuf, dwBufSize);
    try
    while True do
    begin
    dwCount := $FFFFFFFF; // alle Items anfordern
    dwRet := WNetEnumResource(hEnum, dwCount, pBuf, dwBufSize);
    if dwRet = ERROR_MORE_DATA then
    begin
    // der Startwert von 1000 war zu klein
    dwCount := $FFFFFFFF;
    FreeMem(pBuf);
    GetMem(pBuf, dwBufSize);
    dwRet := WNetEnumResource(hEnum, dwCount, pBuf, dwBufSize);
    end;
    if dwRet = ERROR_NO_MORE_ITEMS then
    Break; // Fertig !
    if dwRet <> NO_ERROR then
    Abort; // dwRet enthält eine Fehlermeldung!
    pNR := pBuf;
    while dwCount > 0 do
    begin
    ChildNode := TV.Items.AddChild(TreeNode, pNR.lpRemoteName);
    LoadNetNode(ChildNode, pNR);
    Inc(pNR);
    Dec(dwCount);
    Inc(FPCCount);
    end;
    end;
    finally
    WNetCloseEnum(hEnum);
    FreeMem(pBuf);
    end;
    end;
    </pre>
    Dabei ist FPCCount ein Objektfeld vom Typ Integer. Zuerst versucht mit Funktion, mit 1000 Rechnern hinzukommen. Je mehr Rechner vorhanden sind, um so langsamer dauert die Zusammenstellung.
    &#10

    Comment

    Working...
    X