AGAG4
09-01-2006, 22:33:47
Como puedo ver una lista de todas las PC's Conectadas en una RED LAN asi como en que Grupo de Trabajo Pertenece y SU IP Local de cada una de ellas en Delphi????
Agradezco cualquier información.
No se si te refieres al codigo por el foro en donde está, pero si es asi puedes mirar http://www.clubdelphi.com/foros/showthread.php?t=26737
Si necesitas los recursos, impresoras, controladores ...etc puedes echarle un vistazo a esto, tarda un poco y aun no se porqé, además enumera hasta la máquina en donde uno está parado pero hoy en dia creo saber el porqé, lo q puedes hacer si este es tu caso es buscar en la ayuda del MSDN un ejemplo de la función WNetOpenEnum.
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "winnetwk.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
NETRESOURCE NR;
/*
const int RESOURCE_CONNECTED= 0x1;
const int RESOURCE_GLOBALNET = 0x2;
const int RESOURCE_REMEMBERED = 0x3;
const int RESOURCETYPE_ANY = 0x0;
const int RESOURCETYPE_DISK = 0x1;
const int RESOURCETYPE_PRINT = 0x2;
const int RESOURCETYPE_UNKNOWN = 0xFFFF;
const int RESOURCEUSAGE_CONNECTABLE = 0x1;
const int RESOURCEUSAGE_CONTAINER = 0x2;
const int RESOURCEUSAGE_RESERVED = 0x80000000;
const int RESOURCEDISPLAYTYPE_DOMAIN = 0x1;
const int RESOURCEDISPLAYTYPE_SERVER = 0x2;
const int RESOURCEDISPLAYTYPE_SHARE = 0x3;
*/
TStringList *SL;
char _NetResourceTypes[13][13]={"Generic","Domain","Server","share","File","Group","Network","Root","ShareAdmin","Directory","Tree","NDSContainer","Printer"};
void Enumera(NETRESOURCE *NR,int tab)
{ LPVOID Datos=0; //Puntero al buffer
DWORD lDatos=16*1024; //tamaño del buffer
DWORD nDatos=0xFFFFFFFF;
HANDLE lEnum;
AnsiString Cadena,espacio="";
DWORD WNOE=WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NR, &lEnum);
DWORD WNER=0;
if( WNOE==0)
{ Datos=new char[lDatos];
WNER=WNetEnumResource(lEnum,&nDatos,Datos,&lDatos);
if( WNER==0)
{ NETRESOURCE *NRV= (NETRESOURCE *)Datos;
for(int i=0;i<nDatos;i++)
{ Cadena="";
for(int j=0;j<tab;j++) espacio+=" ";
try
{ if(NRV[i].lpRemoteName)
if(strlen(NRV[i].lpRemoteName))
Cadena=AnsiString(NRV[i].lpRemoteName);
else
{ delete [] Datos;
WNetCloseEnum(lEnum);
return;
}
}
catch(Exception &ex)
{ delete [] Datos;
WNetCloseEnum(lEnum);
return;
}
Cadena=espacio+AnsiString(_NetResourceTypes[(NRV[i].dwDisplayType < 12 ? NRV[i].dwDisplayType : 12)])+": "+Cadena;
SL->Add(Cadena);
//if((NRV[i].dwUsage & RESOURCEUSAGE_CONTAINER)!=0)
//NRV[i].dwUsage=0;
Enumera(&NRV[i],tab+1);
}
//delete [] NRV;
}
if(Datos)
delete [] Datos;
WNetCloseEnum(lEnum);
}
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{ SL= new TStringList();
Enumera(0,0);
for(int i=0;i<SL->Count;i++)
Memo1->Lines->Add(SL->Strings[i]);
delete SL;
}
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.