AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Anzeigen der IPAdresse UND Name der Verbindung
Thema durchsuchen
Ansicht
Themen-Optionen

Anzeigen der IPAdresse UND Name der Verbindung

Ein Thema von SaltJohn · begonnen am 17. Jun 2008 · letzter Beitrag vom 19. Jun 2008
Antwort Antwort
Seite 1 von 3  1 23      
SaltJohn

Registriert seit: 9. Jun 2008
43 Beiträge
 
#1

Anzeigen der IPAdresse UND Name der Verbindung

  Alt 17. Jun 2008, 08:54
Hallo, mir geht es darum in einem Windows 2000 System für sämtliche Netwerkadapter die IP UND den Namen der Verbindung anzeigen zu lassen. Eine Funktion um die IP Adresse zeigen zu lassen habe ich hier im Forum schon gefunden und erfolgreich implemetiert. Jetzt gilt es noch zusätzlich zur IP-adresse den Adapternamen oder auch Adaptertyp anzeigen zu lassen.

Der Code für das Anzeigen der IP von MathiasSimmack hier im Forum

Delphi-Quellcode:
uses
  WinSock;

function GetLocalIPs: string;
type
  PPInAddr = ^PInAddr;
var
  wsadata : TWSAData;
  hostinfo : PHostEnt;
  addr : PPInAddr;
begin
  Result := '';

  if(WSAStartUp(MAKEWORD(1,1),wsadata) = 0) then
  try
    hostinfo := gethostbyname(nil);
    if(hostinfo <> nil) then begin
      addr := pointer(hostinfo^.h_addr_list);

      while(addr^ <> nil) do begin
        Result := Result + inet_ntoa(addr^^) + ^M^J;
        inc(addr);
      end;
    end;
  finally
    WSACleanUp;
  end;
end;
http://www.delphipraxis.net/internal...ect.php?t=2902

Edit: Am besten wäre natürlich eine Methode wo man den jeweiligen LAN-Adapternamen eingeben kann und dann die jeweilige IP als Rückgabe bekommt.
  Mit Zitat antworten Zitat
Mini-Programmierer
(Gast)

n/a Beiträge
 
#2

Re: Anzeigen der IPAdresse UND Name der Verbindung

  Alt 17. Jun 2008, 19:06
Was meinst Du mit Adapternamen ?
  Mit Zitat antworten Zitat
IceTube
(Gast)

n/a Beiträge
 
#3

Re: Anzeigen der IPAdresse UND Name der Verbindung

  Alt 17. Jun 2008, 19:09
Zitat von Mini-Programmierer:
Was meinst Du mit Adapternamen ?
Er meint wohl den Computernamen denke ich, oder?=
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Anzeigen der IPAdresse UND Name der Verbindung

  Alt 17. Jun 2008, 19:19
In hostinfo^.h_name steht der Rechnername (inkl. Domainname).
Die Infos zum Adapter wirst du wohl nur über die IP Helper API bekommen.
Also GetAdaptersAddresses() bzw. GetAdaptersInfo().
Andreas
  Mit Zitat antworten Zitat
SaltJohn

Registriert seit: 9. Jun 2008
43 Beiträge
 
#5

Re: Anzeigen der IPAdresse UND Name der Verbindung

  Alt 17. Jun 2008, 20:06
Einen schönen Abend!

Sorry, habe mich wohl nicht deutlich genug ausgedrückt. Ich meinte "nur" den Namen der Netzwerkverbindung und nicht unbedingt die genaue Bezeichnung der LAN- oder WLANkarte also einfach nur z.B. LAN-1 und LAN-2.

Als Hintergrund möchte ich noch erwähnen, dass ich meinen beiden Netzwerkadaptern via NETSH jeweils eine bestimmte IP zuteile. Das ganze funktioniert erstaunlich einfach. Doch ob jetzt die Zuteilung der IP auch wirklich erfolgreich war ist ja eigentlich ungewiss.

Ich möchte also "einfach" nur überprüfen ob jeder LANverbindung (z.B. LAN-1/LAN-2) die richtige IP übergeben wurde. Ein Hauptproblem ist es das Auslesen der IP mit dem Netzwerkverbindungsnamen zu verbinden. Jede einzelne Funktion gibt es ja unter anderem schon hier im Forum. Ich suche allerdings eine Kombination aus beiden.
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
947 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Anzeigen der IPAdresse UND Name der Verbindung

  Alt 17. Jun 2008, 20:42
Hi,

darf es auch WMI sein? Wenn JA, dann heißt die Klasse win32_NetworkAdapter und in Verbindung mit
win32_NetworkAdapterConfiguration bekommst du alles was gebraucht wird.

Gruß

PS Zu WMI gibt es in der DP genug Beispiele
  Mit Zitat antworten Zitat
SaltJohn

Registriert seit: 9. Jun 2008
43 Beiträge
 
#7

Re: Anzeigen der IPAdresse UND Name der Verbindung

  Alt 17. Jun 2008, 21:55
Also WMI ist natürlich auch recht, nur dachte ich, dass es da bei Win2000 Probleme gibt weil ja so einiges erst mit WinXP dazugekommen ist. Habe allerdings auch keine wirklich treffenden Beispiele bei DP gefunden. Bei "win32_NetworkAdapterConfiguration" kommt z.B kein einziger Treffer obwohl du das Wort ja in deiner Antwort geschrieben hast. Ist wohl ein zu langes Wort.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#8

Re: Anzeigen der IPAdresse UND Name der Verbindung

  Alt 17. Jun 2008, 22:16
Zitat von SaltJohn:
Also WMI ist natürlich auch recht, nur dachte ich, dass es da bei Win2000 Probleme gibt weil ja so einiges erst mit WinXP dazugekommen ist. Habe allerdings auch keine wirklich treffenden Beispiele bei DP gefunden. Bei "win32_NetworkAdapterConfiguration" kommt z.B kein einziger Treffer obwohl du das Wort ja in deiner Antwort geschrieben hast. Ist wohl ein zu langes Wort.
Suche hier im Forum mal nach Hier im Forum suchenWMIDemo, für ein Beispiel für WMI. Du könntest aber auch über mit MSDN-Library durchsuchenGetAdaptersInfo den Adapternamen auslesen und dann in der Registry den Namen der LAN-Verbindung ermitteln. (HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D 36E972-E325-11CE-BFC1-08002BE10318})
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
SaltJohn

Registriert seit: 9. Jun 2008
43 Beiträge
 
#9

Re: Anzeigen der IPAdresse UND Name der Verbindung

  Alt 18. Jun 2008, 06:51
Den Adapternamen habe ich ja schon aber wie schaffe ich es zusätzlich die Ip als String zurück zu erhalten?

Wenn ich z.B. weiß dass "Intel Ethernet 100 Integrated Controller" mein Adapter zu LAN-Verbindung1 ist, soll er mir ausgeben welche IP dieser Adapter hat.

Edit: In der WMI-Demo habe ich jetzt gefunden was ich brauche. In "Win32_NetworkAdapterConfiguration" gibt es "IPAdress" und "Description". Habe allerdings Probleme da ran zu kommen. Das Demo ruft ja sämtliche Klassen auf ich bräcuhte nur diese eine...
  Mit Zitat antworten Zitat
SaltJohn

Registriert seit: 9. Jun 2008
43 Beiträge
 
#10

Re: Anzeigen der IPAdresse UND Name der Verbindung

  Alt 18. Jun 2008, 11:06
Also ich hab mich jetzt mal ein wenig schlau gemacht und eine Methode gefunden über WMI die Adapterbezeichnug und auch die IP Adresse auszulesen. Allerdings habe ich noch ein Problem mit der Augabe der IPs. Wenn ich in meinem Testprogramm auf IP ausgeben klicke kommt die Fehlermeldung:
Zitat:
Exception-Klasse EVariantTypeCastError mit Meldung 'Variante des Typs (Array Variant) konnte nicht in Typ (String) konvertiert werden'
. Demnach wird die IP-Adresse einer Instanz wohl nicht als String ausgegeben? Kann es sein dass diese als Hexadezimalzahl oder Binärzahl ausgelesen wird? beim Aufruf der Adapternamen geht es.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, WbemScripting_TLB, ActiveX, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  var
  l_Values: TStringList;
implementation

{$R *.dfm}
function getWMIValue(WMI_CLASS:string;WMI_VALUE:string): TStringList;
var
   l_WMILocator: ISWbemLocator;
   l_WMIServices: ISWbemServices;
   l_WMIObjectDefinition: ISWbemObject;
   l_WMIObjectSet: SWbemObjectSet;
   l_WMIObjectInstances: IEnumVariant;
   l_WMIObject: ISWbemObject;
   l_WMIPropertySet: ISWbemPropertySet;
   l_WMIProperty: ISWbemProperty;

 
   l_TempObj: OleVariant;
   l_ObjValue: Cardinal;
     
begin
   result := TStringList.Create;

 
   l_WMILocator := CoSWbemLocator.Create;
   l_WMIServices := L_WMILocator.ConnectServer('.', 'root\CIMV2', '', '', '', '', 0, nil);
   l_WMIObjectDefinition := l_WMIServices.Get(WMI_CLASS, wbemFlagUseAmendedQualifiers, nil);
   l_WMIObjectSet := l_WMIObjectDefinition.Instances_(0, nil);
   l_WMIObjectInstances := (l_WMIObjectSet._NewEnum) as IEnumVariant;

        
   while (l_WMIObjectInstances.Next(1, l_TempObj, l_ObjValue) = S_OK) do
   begin
      l_WMIObject:= IUnknown(l_TempObj) as SWBemObject;

 
      l_WMIPropertySet := l_WMIObject.Properties_;
      l_WMIProperty := l_WMIPropertySet.Item(WMI_VALUE, 0);

 
      if not VarIsNull(l_WMIProperty.Get_Value) then
        result.Add(l_WMIProperty.Get_Value) else result.Add('<unbekannt>');
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var x:integer;
begin
l_Values := getWMIValue('Win32_NetworkAdapterConfiguration','IPAddress');
for x:=0 to l_Values.Count-1 do begin
  ShowMessage(l_Values.Strings[x]);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var x:integer;
begin
l_Values := getWMIValue('Win32_NetworkAdapter','Name');
for x:=0 to l_Values.Count-1 do begin
  ShowMessage(l_Values.Strings[x]);
end;
end;

end.
Angehängte Dateien
Dateityp: exe project1_749.exe (436,0 KB, 38x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz