Announcement

Collapse
No announcement yet.

Alle Computer aus einem Netzwerk in eine Combobox anzeigen...

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

  • Alle Computer aus einem Netzwerk in eine Combobox anzeigen...

    Hallo Leute...

    Ist es moeglich alle aktiven ComputerNamen eines internen Netzwerkes auszulesen und in einer Combobox anzuzeigen...

    mfg

    Najib

  • #2
    Hallo,

    wenn hier im FORUM nach der Zeichenkette <b>WNetOpenEnum</b> gesucht wird, lassen sich einige Beispiele finden

    Comment


    • #3
      Danke Andreas...
      Ich werde mal nachschauen...

      Gruss

      Naji

      Comment


      • #4
        <pre class="sourcecode"><code>
        <b>function</b> TThreadGetComputer.RechnerInWG(lpnr: PNetResource): Boolean;

        <b>procedure</b> AddComputerToList(Value: TNetResource);
        <b>begin</b>
        strRemoteName := Value.lpRemoteName;
        <b>if</b> Value.dwDisplayType &lt;&gt; RESOURCEDISPLAYTYPE_SERVER <b>THEN</b> Exit;
        Synchronize(AddNameToListbox);
        <b>end</b>;

        <b>const</b>
        <font color="#003399"><i>// RESOURCE_CONNECTED RESOURCE_CONTEXT RESOURCE_GLOBALNET RESOURCE_REMEMBERED</i></font>
        c_dwScope = RESOURCE_GLOBALNET;
        <font color="#003399"><i>// RESOURCETYPE_ANY RESOURCETYPE_DISK RESOURCETYPE_PRINT</i></font>
        c_dwType = RESOURCETYPE_DISK;

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

        <font color="#003399"><i>//</i></font>
        <font color="#003399"><i>// basiert auf Microsoft Beispiel &quot;Enumerating Network Resources&quot; in C++</i></font>
        <font color="#003399"><i>//</i></font>
        <font color="#003399"><i>// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wnet/networks_77sj.asp</i></font>
        <font color="#003399"><i>//</i></font>

        cbBuffer := 16384;
        centries := -1;
        dwResult := WNetOpenEnum( c_dwScope,
        c_dwType,
        0, <font color="#003399"><i>// 0 = All resources</i></font>
        lpnr,
        hEnum);

        <b>if</b> dwResult &lt;&gt; NO_ERROR
        <b>then</b>
        <b>begin</b>
        Result := False;
        <font color="#003399"><i>// Fehlerbehandlung('Fehler bei WNetOpenEnum (%d)',[dwResult]);</i></font>
        Exit;
        <b>end</b>;

        FillChar( lpnrLocal, cbBuffer, 0 );

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

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

        dwResult := WNetCloseEnum(hEnum);

        <b>if</b> dwResult &lt;&gt; NO_ERROR
        <b>then</b>
        <b>begin</b>
        Result := False;
        <font color="#003399"><i>// Fehlerbehandlung (Format('Fehler bei WNetCloseEnum (%d)',[dwResult]));</i></font>
        Exit;
        <b>end</b>;

        Result := True;
        <b>end</b>;

        </code></pre><p>
        Hier muss noch die Routine <b>AddComputer</b> angepasst werden, weil das Teil aus einem Thread kommt, aber ansonsten tut's ganz gut...<p>
        Schöne Grüße, Mario Noac
        Schöne Grüße, Mario

        Comment

        Working...
        X