Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Вниз

поиск компьютеров в сети   Найти похожие ветки 

 
nevalex   (2005-09-26 23:54) [0]

как мне найти имена всех компоп в локальной сети
у нас три ворк группы
?????


 
Eraser ©   (2005-09-27 01:31) [1]


> nevalex   (26.09.05 23:54)

А поисковые системы на что ?
держи:
unit FindComp;  

interface  

uses  
Windows, Classes;  

function FindComputers: DWORD;  

var  
Computers: TStringList;  

implementation  

uses  
SysUtils;  

const  
MaxEntries = 250;  

function FindComputers: DWORD;  

var  
EnumWorkGroupHandle, EnumComputerHandle: THandle;  
EnumError: DWORD;  
Network: TNetResource;  
WorkGroupEntries, ComputerEntries: DWORD;  
EnumWorkGroupBuffer, EnumComputerBuffer: array[1..MaxEntries] of TNetResource;  
EnumBufferLength: DWORD;  
I, J: DWORD;  

begin  

Computers.Clear;  

FillChar(Network, SizeOf(Network), 0);  
with Network do  
begin  
  dwScope := RESOURCE_GLOBALNET;  
  dwType := RESOURCETYPE_ANY;  
  dwUsage := RESOURCEUSAGE_CONTAINER;  
end;  
 
EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @Network, EnumWorkGroupHandle);  

if EnumError = NO_ERROR then  
begin  
  WorkGroupEntries := MaxEntries;  
  EnumBufferLength := SizeOf(EnumWorkGroupBuffer);  
  EnumError := WNetEnumResource(EnumWorkGroupHandle, WorkGroupEntries, @EnumWorkGroupBuffer, EnumBufferLength);  

  if EnumError = NO_ERROR then  
  begin  
    for I := 1 to WorkGroupEntries do  
    begin  
      EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @EnumWorkGroupBuffer[I], EnumComputerHandle);  
      if EnumError = NO_ERROR then  
      begin  
        ComputerEntries := MaxEntries;  
        EnumBufferLength := SizeOf(EnumComputerBuffer);  
        EnumError := WNetEnumResource(EnumComputerHandle, ComputerEntries, @EnumComputerBuffer, EnumBufferLength);  
        if EnumError = NO_ERROR then  
          for J := 1 to ComputerEntries do  
            Computers.Add(Copy(EnumComputerBuffer[J].lpRemoteName, 3, Length(EnumComputerBuffer[J].lpRemoteName) - 2));  
        WNetCloseEnum(EnumComputerHandle);  
      end;  
    end;  
  end;  
  WNetCloseEnum(EnumWorkGroupHandle);  
end;  

if EnumError = ERROR_NO_MORE_ITEMS then  
  EnumError := NO_ERROR;  
Result := EnumError;  

end;  

initialization  

Computers := TStringList.Create;  

finalization  

Computers.Free;  

end.


 
Eraser ©   (2005-09-27 01:31) [2]

ещё:
function TNetForm.FillNetLevel(xxx: PNetResource; List:TListItems): Word;
Type
   PNRArr = ^TNRArr;
   TNRArr = array[0..59] of TNetResource;
Var
  x: PNRArr;
  tnr: TNetResource;
  I : integer;
  EntrReq,
  SizeReq,
  twx: THandle;
  WSName: string;
  LI:TListItem;
begin
    Result :=WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER, xxx, twx);
    If Result = ERROR_NO_NETWORK Then Exit;
    if Result = NO_ERROR then
    begin
           New(x);
           EntrReq := 1;
           SizeReq := SizeOf(TNetResource)*59;
           while (twx <> 0) and
                 (WNetEnumResource(twx, EntrReq, x, SizeReq) <> ERROR_NO_MORE_ITEMS) do
           begin
                 For i := 0 To EntrReq - 1 do
                 begin
                  Move(x^[i], tnr, SizeOf(tnr));
                  case tnr.dwDisplayType of
                   RESOURCEDISPLAYTYPE_SERVER:
                   begin
                      if tnr.lpRemoteName <> "" then
                          WSName:= tnr.lpRemoteName
                          else WSName:= tnr.lpComment;
                      LI:=list.Add;
                      LI.Caption:=copy(WSName,3,length(WSName)-2);
                      //list.Add(WSName);
                   end;
                   else FillNetLevel(@tnr, list);
                  end;
                 end;
           end;
           Dispose(x);
           WNetCloseEnum(twx);
    end;
end;

Пример вызова:
FillNetLevel(nil,ListView1.Items);    

Автор Pegas
Взято с Vingrad.ru http://forum.vingrad.ru


 
Eraser ©   (2005-09-27 01:32) [3]


> nevalex   (26.09.05 23:54)

ещё:
function EnumerateFunc( hwnd: HWND; hdc: HDC; lpnr: PNetResource ): Boolean;
const
cbBuffer : DWORD    = 16384;      // 16K is a good size
var
hEnum, dwResult, dwResultEnum : DWORD;
lpnrLocal : array
      [0..16384 div SizeOf(TNetResource)] of TNetResource;    // pointer to enumerated structures
i : integer;
cEntries : Longint;              
begin
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[i].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;

Код вроде бы из борландовского FAQ. На форуме приведен SmaLL


 
Eraser ©   (2005-09-27 01:32) [4]

и ещё один способ:
var
 Computer: array[1..500] of string[25];
 ComputerCount: Integer;

procedure FindAllComputers(Workgroup: string);
var
 EnumHandle: THandle;
 WorkgroupRS: TNetResource;
 Buf: array[1..500] of TNetResource;
 BufSize: Integer;
 Entries: Integer;
 Result: Integer;
begin
 ComputerCount := 0;
 Workgroup := Workgroup + #0;
 FillChar(WorkgroupRS, SizeOf(WorkgroupRS), 0);
 with WorkgroupRS do
   begin
     dwScope := 2;
     dwType := 3;
     dwDisplayType := 1;
     dwUsage := 2;
     lpRemoteName := @Workgroup[1];
   end;
 WNetOpenEnum(RESOURCE_GLOBALNET,
   RESOURCETYPE_ANY,
   0,
   @WorkgroupRS,
   EnumHandle);
 repeat
   Entries := 1;
   BufSize := SizeOf(Buf);
   Result :=
     WNetEnumResource(EnumHandle,
     Entries,
     @Buf,
     BufSize);
   if (Result = NO_ERROR) and (Entries = 1) then
     begin
       Inc(ComputerCount);
       Computer[ComputerCount] := StrPas(Buf[1].lpRemoteName);
     end;
 until (Entries <> 1) or (Result <> NO_ERROR);
 WNetCloseEnum(EnumHandle);
end; { Find All Computers }


Поисковики рулят!


 
Yuran   (2005-09-28 09:51) [5]

Круто!!! Мне тоже понадобилось. Спасибо!!!!



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.019 c
1-1134039576
Владислав
2005-12-08 13:59
2006.01.15
Реализация лог-файла.


14-1135007795
LordOfRock
2005-12-19 18:56
2006.01.15
Посмотрите сайт


2-1135699386
Tarbls
2005-12-27 19:03
2006.01.15
что за программа SKY о которой говорят на этом форуме


14-1134992922
stone
2005-12-19 14:48
2006.01.15
Двушка (квартира) в Москве


1-1134159570
Free0n
2005-12-09 23:19
2006.01.15
Кто может и кого возникнут оригинальные идеи посоветуйте...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский