Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Enum(Netzwerkadapter)[0]->IP?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.09.2006, 12:13 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Entweder bin ich zu müde, oder MSDN+Google zu unübersichtlich. Hab keine Lust mehr, noch länger rumzusuchen...

WIe kann ich unter der WinNT-Schiene die Netzwerkverbindungen durchgehen, und mir die IP-Adresse der ersten gefundenen LAN-Verbindung raussuchen? Das ganze wird ein erweitertes Systeminfo-Programm. Hab bisher MFC, STL, API und Assembler gemischt, um alles andere zu finden, nur die IP nicht Wenns gar nicht anders geht, bau ich auch noch .NET ein oder mach ne Pipe zu ipconfig auf, aber das kanns ja wohl nicht sein...

Kennt Ihr Euch da aus?
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.09.2006, 12:37 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
aus 'nem "alten" Projekt:

C++:
#include <winsock2.h>
#pragma comment (lib,"ws2_32.lib")
#pragma comment (lib,"mpr.lib")

void CIPDlg::OnBnClickedButton1()
{
    CString strTemp;
struct hostent *host;
struct in_addr *ptr;    

DWORD dwScope = RESOURCE_CONTEXT;
NETRESOURCE *NetResource = NULL;
HANDLE hEnum;
WNetOpenEnum( dwScope, NULL, NULL, NULL, &hEnum );

WSADATA wsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);

if ( hEnum )
{
  DWORD Count = 0xFFFFFFFF;
  DWORD BufferSize = 2048;
  LPVOID Buffer = new char[2048];
  WNetEnumResource( hEnum, &Count, Buffer, &BufferSize );
  NetResource = (NETRESOURCE*)Buffer;

  char szHostName[200];

  for ( unsigned int i = 0; i < BufferSize/sizeof(NETRESOURCE);
                                          i++, NetResource++ )
  {
    if ( NetResource->dwUsage == RESOURCEUSAGE_CONTAINER &&
                  NetResource->dwType == RESOURCETYPE_ANY )
    {
      if ( NetResource->lpRemoteName )
      {
         CString strFullName = NetResource->lpRemoteName;
         if ( 0 == strFullName.Left(2).Compare("\\\\") )
           strFullName = strFullName.Right(strFullName.GetLength()-2);
         gethostname( szHostName, strlen( szHostName ) );
         host = gethostbyname(strFullName);
         if(host == NULL) continue;
         ptr = (struct in_addr *) host->h_addr_list[0];

        
         int a = ptr->S_un.S_un_b.s_b1;
         int b = ptr->S_un.S_un_b.s_b2;  
         int c = ptr->S_un.S_un_b.s_b3;  
         int d = ptr->S_un.S_un_b.s_b4;  

         strTemp.Format("%s -->  %d.%d.%d.%d",strFullName,a,b,c,d);
         AfxMessageBox(strTemp);
      }
    }
  }
  delete Buffer;
  WNetCloseEnum( hEnum );
}
WSACleanup();
}



Paar Anpassungen an Deine Bedürfnisse müssen wohl noch gemacht werden
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 12.09.2006 um 12:40 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.09.2006, 11:25 Uhr
Bruder Leif
dances with systems
(Operator)


Mehr als ein paar Anpassungen warens wirklich nicht -> Klappt einwandfrei
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: