Er det noen som vet hvordan man kan legge alle maskiner i nettverket til en TListBox?
DiZpel
Her er funktionen, hvis din ListBox ikke hedder ListBox1 skal du lige ændre det et sted:
<pre>function TForm1.EnumerateFunc( hwnd: HWND; hdc: HDC ; lpnr: PNetResource ): Boolean;
var
cbBuffer : DWORD;
hEnum, dwResult, dwResultEnum : DWORD;
lpnrLocal : array
[0..16384 div SizeOf(TNetResource)] of TNetResource; // pointer to enumerated structures
i : integer;
cEntries : Longint;
begin
cbBuffer := 16384;
centries := -1; // enumerate all possible entries
// Call the WNetOpenEnum function to begin the enumeration.
dwResult := WNetOpenEnum(
RESOURCE_CONTEXT, // Enumerate currently connected resources.
RESOURCETYPE_DISK, // all resources
0, // enumerate all resources
lpnr, // NULL first time the function is called
hEnum // handle to the resource
);
if (dwResult <> NO_ERROR) then
begin
// Process errors with an application-defined error handler
Result := False;
Exit;
end;
// Initialize the buffer.
FillChar( lpnrLocal, cbBuffer, 0 );
// Call the WNetEnumResource function to continue
// the enumeration.
dwResultEnum := WNetEnumResource(hEnum, // resource handle
DWORD(cEntries), // defined locally as -1
@lpnrLocal, // LPNETRESOURCE
cbBuffer); // buffer size
// This is just printing
for i := 0 to cEntries - 1 do
begin
// loop through each structure and
// get remote name of resource... lpnrLocal
.lpRemoteName)
ListBox1.Items.Add(lpnrLocal.lpRemoteName);
end;
// Call WNetCloseEnum to end the enumeration.
dwResult := WNetCloseEnum(hEnum);
if(dwResult <> NO_ERROR) then
begin
// Process errors... some user defined function here
Result := False;
end
else
Result := True;
end;</pre>
Det her skriver du så i din knap (eller et eller andet sted):
<pre> ListBox1.Clear;
EnumerateFunc(Handle, 0, nil);</pre>
Emil Melgaard
- Admin på gruppen Delphi spilprogrammering.
http://www.delphispilprogram.udvikleren.dk