Hallo!<br>
<br>
In einer NT-Umgebung mit einem MS-Netzwerk <b>und</b> Novell-Netzwerk möchte ich mir alle momentan in Netz befindlichen Computer (und User) anzeigen lassen.<br>
Versucht habe ich es bisher mit folgendem Qellcode:<br>
<br>
<p><font face="curier new, times new roman, sans-serif">
function TFrmNDMain.LoadNetNode(TreeNode: TTreeNode; pNetNode: PNetResourceA): Integer;<br>
var<br>
hEnum: THandle;<br>
dwCount: DWORD;<br>
dwBufSize: DWORD;<br>
pNR, pBuf: PNetResourceA;<br>
dwRet: DWORD;<br>
ChildNode : TTreeNode;<br>
begin<br>
Result := 0;<br>
dwRet := WNetOpenEnum(RESOURCE_GLOBALNET,<br>
RESOURCETYPE_ANY, RESOURCEUSAGE_CONNECTABLE, pNetNode, hEnum);<br>
if dwRet <> NO_ERROR<br>
then Exit;<br>
dwBufSize := 1000;<br>
GetMem(pBuf, dwBufSize);<br>
try<br>
while True do<br>
begin<br>
Application.Pr ocessMessages;<br>
dwCount := $FFFFFFFF; // alle Items anfordern<br>
dwRet := WNetEnumResource(hEnum, dwCount, pBuf, dwBufSize);<br>
if dwRet = ERROR_MORE_DATA<br>
then begin<br>
// der Startwert von 1000 war zu klein<br>
dw Count := $FFFFFFFF;<br>
Fr eeMem(pBuf);<br>
Ge tMem(pBuf, dwBufSize);<br>
&n bsp; dwRet := WNetEnumResource(hEnum, dwCount, pBuf, dwBufSize);<br>
end;<br>
  ;if dwRet = ERROR_EXTENDED_ERROR<br>
th en MessageDlg('Erweiterter Netzwerkfehler', mtError, [mbOK], 0);<br>
if dwRet = ERROR_INVALID_HANDLE<br>
then MessageDlg('Ungültiges Handle!', mtError, [mbOK], 0);<br>
if dwRet = ERROR_NO_NETWORK<br>
then MessageDlg('Kein Netzwerk gefunden!', mtInformation, [mbOK], 0);<br>
if dwRet = ERROR_NO_MORE_ITEMS then<br>
Br eak; // Fertig !<br>
  ;if dwRet <> NO_ERROR then<br>
&n bsp; Abort; // dwRet enthält eine Fehlermeldung!<br>
 pNR := pBuf;<br>
while (dwCount > 0) and (dwRet = NO_ERROR) do<br>
begin<br>
Ch ildNode := TV.Items.AddChild(TreeNode, pNR.lpRemoteName);<br>
Lo adNetNode(ChildNode, pNR);<br>
In c(pNR);<br>
De c(dwCount);<br>
In c(FPCCount);<br>
 end;<br>
 end;<br>
 finally<br>
   Result := dwRet;<br>
   WNetCloseEnum(hEnum);<br>
   FreeMem(pBuf);<br>
 end;<br>
end;<br>
</font></p>
<br>
Ich bekomme zwar beide Netzwerke angezeigt, aber kann sie nicht "aufklappen" um (in diesem Fall) die Rechner zu sehen..?<br>
<br>
THANX!<br>
<br>
Nico Stöckigt
<br>
In einer NT-Umgebung mit einem MS-Netzwerk <b>und</b> Novell-Netzwerk möchte ich mir alle momentan in Netz befindlichen Computer (und User) anzeigen lassen.<br>
Versucht habe ich es bisher mit folgendem Qellcode:<br>
<br>
<p><font face="curier new, times new roman, sans-serif">
function TFrmNDMain.LoadNetNode(TreeNode: TTreeNode; pNetNode: PNetResourceA): Integer;<br>
var<br>
hEnum: THandle;<br>
dwCount: DWORD;<br>
dwBufSize: DWORD;<br>
pNR, pBuf: PNetResourceA;<br>
dwRet: DWORD;<br>
ChildNode : TTreeNode;<br>
begin<br>
Result := 0;<br>
dwRet := WNetOpenEnum(RESOURCE_GLOBALNET,<br>
RESOURCETYPE_ANY, RESOURCEUSAGE_CONNECTABLE, pNetNode, hEnum);<br>
if dwRet <> NO_ERROR<br>
then Exit;<br>
dwBufSize := 1000;<br>
GetMem(pBuf, dwBufSize);<br>
try<br>
while True do<br>
begin<br>
Application.Pr ocessMessages;<br>
dwCount := $FFFFFFFF; // alle Items anfordern<br>
dwRet := WNetEnumResource(hEnum, dwCount, pBuf, dwBufSize);<br>
if dwRet = ERROR_MORE_DATA<br>
then begin<br>
// der Startwert von 1000 war zu klein<br>
dw Count := $FFFFFFFF;<br>
Fr eeMem(pBuf);<br>
Ge tMem(pBuf, dwBufSize);<br>
&n bsp; dwRet := WNetEnumResource(hEnum, dwCount, pBuf, dwBufSize);<br>
end;<br>
  ;if dwRet = ERROR_EXTENDED_ERROR<br>
th en MessageDlg('Erweiterter Netzwerkfehler', mtError, [mbOK], 0);<br>
if dwRet = ERROR_INVALID_HANDLE<br>
then MessageDlg('Ungültiges Handle!', mtError, [mbOK], 0);<br>
if dwRet = ERROR_NO_NETWORK<br>
then MessageDlg('Kein Netzwerk gefunden!', mtInformation, [mbOK], 0);<br>
if dwRet = ERROR_NO_MORE_ITEMS then<br>
Br eak; // Fertig !<br>
  ;if dwRet <> NO_ERROR then<br>
&n bsp; Abort; // dwRet enthält eine Fehlermeldung!<br>
 pNR := pBuf;<br>
while (dwCount > 0) and (dwRet = NO_ERROR) do<br>
begin<br>
Ch ildNode := TV.Items.AddChild(TreeNode, pNR.lpRemoteName);<br>
Lo adNetNode(ChildNode, pNR);<br>
In c(pNR);<br>
De c(dwCount);<br>
In c(FPCCount);<br>
 end;<br>
 end;<br>
 finally<br>
   Result := dwRet;<br>
   WNetCloseEnum(hEnum);<br>
   FreeMem(pBuf);<br>
 end;<br>
end;<br>
</font></p>
<br>
Ich bekomme zwar beide Netzwerke angezeigt, aber kann sie nicht "aufklappen" um (in diesem Fall) die Rechner zu sehen..?<br>
<br>
THANX!<br>
<br>
Nico Stöckigt
Comment