Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

  • Главная
  • FAQ
  • Как получить список компьютеров подключенных к сети?

Как получить список компьютеров подключенных к сети?

CuBook2.755

Для начала опишем булевую переменную:
BOOL EnumHandler( HWND hWnd, DWORD dwLevel, LPNETRESOURCE lpNet )
{
BOOL ret=TRUE;
DWORD dwStatus, dwSize, dwEntries, i, j;
LPSTR lpStr=NULL;
LPNETRESOURCE lpNewNet=NULL;
HANDLE hEnum=NULL;

dwStatus = WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, lpNet, &hEnum );
if( dwStatus != NO_ERROR )
{ ret=FALSE; goto mend; }
dwEntries = 1000;
dwSize = sizeof(NETRESOURCE) * dwEntries;
lpNewNet=(LPNETRESOURCE)new char[dwSize];
if(!lpNewNet){ ret=FALSE; goto mend; }
dwStatus = WNetEnumResource( hEnum, &dwEntries, (LPVOID)lpNewNet, &dwSize );

if( dwStatus != NO_ERROR )
{
ret=FALSE; goto mend;
}
WNetCloseEnum( hEnum );
hEnum=NULL;

lpStr=new char[512];
if(!lpStr){ ret=FALSE; goto mend; }
for( i = 0; i < dwEntries; i++ )
{
if( lpNewNet[ i ].dwDisplayType==RESOURCEDISPLAYTYPE_NETWORK)
{
strcpy( lpStr, lpNewNet[ i ].lpProvider );
}
if( lpNewNet[ i ].lpRemoteName )
{
if( lpNewNet[ i ].dwDisplayType == RESOURCEDISPLAYTYPE_DOMAIN )
strcpy( lpStr, "Domain..." );
if( lpNewNet[ i ].dwDisplayType == RESOURCEDISPLAYTYPE_GENERIC )
strcpy( lpStr, "Generic.." );
if( lpNewNet[ i ].dwDisplayType == RESOURCEDISPLAYTYPE_SERVER )
strcpy( lpStr, "Server..." );
if( lpNewNet[ i ].dwDisplayType == RESOURCEDISPLAYTYPE_SHARE )
strcpy( lpStr, "Share...." );
for( j = 0; j < dwLevel; j++ )
strcat( lpStr, "......" );
strcat( lpStr, lpNewNet[ i ].lpRemoteName );
//Добавим IP адрес к концу строки
//if( lpNewNet[ i ].dwDisplayType == RESOURCEDISPLAYTYPE_SERVER )
//if(!GetIP(&lpNewNet[ i ].lpRemoteName[2],lpStr))continue;
}
SendMessage( hWnd, LB_ADDSTRING, 0,(LPARAM)lpStr );
UpdateWindow(hWnd);
// Уровень детализации вы сможете установить здесь
if(dwLevel < 2) //0=Сеть,1=Domain,2=Host,3=Resource
EnumHandler( hWnd, dwLevel + 1, lpNewNet + i );
}
mend:
if(hEnum)WNetCloseEnum( hEnum );
if(lpStr)delete lpStr;
if(lpNewNet)delete lpNewNet;
return ret;
}
Теперь с помощью кнопки Button выведем список подключенных компьютеров:
HCURSOR hOldCursor;
ListBox1->Clear();
SendMessage(Form1->ListBox1->Handle , LB_RESETCONTENT, 0, 0);
UpdateWindow(Form1->ListBox1->Handle);
hOldCursor = ::SetCursor(LoadCursor(NULL, IDC_WAIT));
EnumHandler(Form1->ListBox1->Handle, 0, NULL);
::SetCursor(hOldCursor);
IP адреса компьютеров выводятся в компоненте ListBox1.
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

  Комментарии

0 aleksey 25.12.2014 11:46 #1
Впечатлили конструкции типа ...
if(!lpNewNet){ ret=FALSE; goto mend; }
...
ret=FALSE; goto mend;

Кто Вас учил так писать на С ???

Цитата:
кхе-кхе, код не мой)))
код был выложен ооочень давно «почетным пользователем» на одном из форумов посвященным программированию.

Добавить комментарий