Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Anzeigen der IPAdresse UND Name der Verbindung (https://www.delphipraxis.net/115737-anzeigen-der-ipadresse-und-name-der-verbindung.html)

SaltJohn 17. Jun 2008 07:54


Anzeigen der IPAdresse UND Name der Verbindung
 
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.

Mini-Programmierer 17. Jun 2008 18:06

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Was meinst Du mit Adapternamen ?

IceTube 17. Jun 2008 18:09

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Zitat:

Zitat von Mini-Programmierer
Was meinst Du mit Adapternamen ?

Er meint wohl den Computernamen denke ich, oder?=

shmia 17. Jun 2008 18:19

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
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().

SaltJohn 17. Jun 2008 19:06

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
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.

Alter Mann 17. Jun 2008 19:42

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
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

SaltJohn 17. Jun 2008 20:55

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
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.

RWarnecke 17. Jun 2008 21:16

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Zitat:

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})

SaltJohn 18. Jun 2008 05:51

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
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...

SaltJohn 18. Jun 2008 10:06

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Liste der Anhänge anzeigen (Anzahl: 1)
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.

soulies 18. Jun 2008 10:54

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
hoi,

'IpAddress' selbst ist ne Liste mit den entsprechenden Elementen.

Du müsstest also die Liste durchlaufen und dann jedes Element deiner Rückgabe-Liste hinzufügen.
(Ich glaub so ists richtig)


cya

SaltJohn 18. Jun 2008 12:22

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Verstehe dich leider nicht ganz. Wie mache ich das mit der Liste durchlaufen? Verstehe auch nicht warum das eine Liste sein soll da es ja nur eine IP gibt und diese in der WMI Demo auch nur in einer Zeile aufgeführt ist eben genauso wie bei den Adapternamen usw.

soulies 18. Jun 2008 12:26

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
ein Adapter kann mehrere IpAdressen haben - alle IpAdressen werden in einer Liste gehalten, nicht in einem einzigen string

möglichkeit:
Delphi-Quellcode:
  if (WMI_VALUE='Name') then
    begin
      if not VarIsNull(l_WMIProperty.Get_Value) then
         result.Add(l_WMIProperty.Get_Value) else result.Add('<unbekannt>');
    end
  else // die IpAdressen
    begin
      if not VarIsNull(l_WMIProperty.Get_Value) then
        begin
          for i:=0 to VarArrayDimCount(l_WMIProperty.Get_Value) do // VarArrayDimCount müsste die Länge der Liste sein
             result.Add(l_WMIProperty.Get_Value[i]);
        end;
    end;
cya

SaltJohn 18. Jun 2008 14:37

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Hallo Soulis, erstmal danke für deine Geduld doch ich muss dir erneut sagen, dass ich dir leider nicht ganz folgen kann. Die "IPaddress" einer Instanz wird also nicht in einem String sondern in einem Array of Strings ausgegeben soviel habe ich glaube ich verstanden.
Ich habe mir jetzt eine andere laufende Funktion zusammengebastelt in der ich die Instanzen mit einem zuvor definierten Adapternamen "FAdapter" vergleiche. Sobald dieser gefunden wurde soll die IP-Adresse ausgelesen werden. Zum testen habe ich anstatt "IPAdress" einfach "SettingID" (ein anderes Atribut) genommen da hier ein String pro Instanz übergeben wird. Das ganze funktioniert soweit. Es gilt also "nur" nur noch das mit "Address" statt wie im Code zu sehen "SettingID" hinzubekommen. Da bräuchte eben noch Hilfe

Delphi-Quellcode:
function GetIPAddress : string;

var
 wmi : variant;
 wmiService : variant;
 nicstatus : variant;
 card : Olevariant;
 cnt : integer;
 Enum: IEnumVariant;
 P : IUnknown;
 F : Cardinal;
 cardCap : String;
 strSettingID : String;
 

begin

  WMI:=CreateOleObject('WbemScripting.SWbemLocator');
  wmiService := wmi.ConnectServer('.', 'root\CIMV2');
  nicstatus := wmiService.InstancesOf('Win32_NetworkAdapterConfiguration');
  p := nicstatus._NewEnum;
  p.QueryInterface(IEnumVariant, Enum);
  for cnt := 0 to nicstatus.Count - 1 do
   begin
     Enum.Next(1, card, F);
     cardCap := Copy(card.Caption, 12, MaxInt);
     if cardCap = FAdapter then //Wenn Adapter in der jeweiligen Instanz gleich von mir definierter Adapter
        begin
          strSettingID := card.SettingID; // statt card.SettingID müsste IPAddress stehen
          result := (cardCap + ' : ' + strSettingID); //hier der String mit der richtigen IP aus dem Array von IPAddress
          break;
        end
   end;
   
end;

soulies 18. Jun 2008 15:25

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
hoi,

Delphi-Quellcode:
function getWMIValue(WMI_CLASS:string;WMI_VALUE:string;Adapter:string): string;
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;
   i : integer ;    
begin
   Result := '' ;
   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_WMIServices.execquery('Select * from '+wmiClass+' where caption like '+#39+#37+Adapter+#39,'WQL',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
        begin
          for i:=0 to VarArrayDimCount(l_WMIProperty.Get_Value) do
             result := result + l_WMIProperty.Get_Value[i] + ' ; ' ;
        end;
   end;
end;
und denn deine funktion

Delphi-Quellcode:
function GetIPAddress : string;

var
wmi : variant;
wmiService : variant;
nicstatus : variant;
card : Olevariant;
cnt : integer;
Enum: IEnumVariant;
P : IUnknown;
F : Cardinal;
cardCap : String;
strSettingID : String;


begin

  WMI:=CreateOleObject('WbemScripting.SWbemLocator');
  wmiService := wmi.ConnectServer('.', 'root\CIMV2');
  nicstatus := wmiService.InstancesOf('Win32_NetworkAdapterConfiguration');
  p := nicstatus._NewEnum;
  p.QueryInterface(IEnumVariant, Enum);
  for cnt := 0 to nicstatus.Count - 1 do
   begin
     Enum.Next(1, card, F);
     cardCap := Copy(card.Caption, 12, MaxInt);
     if cardCap = FAdapter then //Wenn Adapter in der jeweiligen Instanz gleich von mir definierter Adapter
        begin        
          result := getWMIValue('Win32_NetworkAdapterConfiguration','IPAddress',FAdapter);
          break;
        end
   end;
   
end;

auf die schnelle zusammen gebastelt ...

cya

SaltJohn 18. Jun 2008 16:58

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Hi soulies,

zunächst einmal DANKE!

hätte nicht gedacht dass ich für die IP noch so eine große Funktion benötige :)

Bisher lief mein Programm ohne zusätzliche Units wie WbemScripting_TLB welche ich nun eingebunden habe. Was muss denn noch eingebunden werden damit die Funktion läuft? Er bringt mir nämlich

Zitat:

[Pascal Fehler] : E2003 Undefinierter Bezeichner: 'wmiClass'
im Abschnnitt
Delphi-Quellcode:
l_WMIObjectSet:= l_WMIServices.execquery('Select * from '+wmiClass+' where caption like '+#39+#37+Adapter+#39,'WQL',0,nil);
oder muss ich "wmiClass" noch deklarieren?

Alter Mann 18. Jun 2008 19:03

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Hi SaltJohn,

'wmiClass' sollte WMI_CLASS heißen, so wie in der Funktionsdeklaration:
Delphi-Quellcode:
function getWMIValue(WMI_CLASS:string;WMI_VALUE:string;Adapter:string): string;
Gruß

SaltJohn 18. Jun 2008 20:40

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Hallo Alter Mann, das wars vielen Dank für den Hinweis!

Das Programm läuft jetzt aber nur solange bis ich die Funktion aufrufe. Dann bricht er in der Zeile
Delphi-Quellcode:
result := result + l_WMIProperty.Get_Value[i] + ' ; ' ;
ab

mit der Meldung:
Zitat:

Erste Gelegenheit für Exception bei $7C812A5B. Exception-Klasse EVariantBadIndexError mit Meldung 'Variant or safe array index out of bounds'. Prozess Project1.exe (368)

soulies 19. Jun 2008 06:19

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
hi,

ich hab eben mal den code durchlaufen lassen - und bei mir hängt er sich net auf.
Rückgabe der IPAdressen war OK.

hab allerdings Fadapter/Adapter direkt eingetragen, da ich die variable net habe.

Frage:
Delphi-Quellcode:
cardCap := Copy(card.Caption, 12, MaxInt);
die zeichen davor, die du net mitkopierst entsprechen die : '[000000xx]' ?

Was passiert wenn Du testweise auch den Adapter direkt einträgst ?

cya

SaltJohn 19. Jun 2008 07:57

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Moin soulies!

Zitat:

Zitat von soulies

Frage:
Delphi-Quellcode:
cardCap := Copy(card.Caption, 12, MaxInt);
die zeichen davor, die du net mitkopierst entsprechen die : '[000000xx]' ?

Ja, das ist korrekt. Wusste mir nicht anders zu helfen :)

Habe es jetzt auch zum laufen bekommen. War wohl ein klassischer "off-by-one-error" bei mir.

mit...

Delphi-Quellcode:
if not VarIsNull(l_WMIProperty.Get_Value) then
        begin
          for i:=0 to VarArrayDimCount(l_WMIProperty.Get_Value)-1 do
             result := result + l_WMIProperty.Get_Value[i] + ' ; ' ;
        end;
hat es dann funktioniert. Super :)


Was mir allerdings keine Ruhe läßt... Mich würde noch interessieren ob es nicht doch möglich ist die IPAdresse ohne "WbemScripting_TLB" einzubinden. Ich meine ich kann ja auf die Instanz zugreifen nur eben nicht auf den String.

Edit: Leider zu früh gefreut... habe ich eben bemerkt dass es unter win2000 Probleme gibt. Es kommt die Fehlermeldung "Die Anfrage ist ungültig". Komisch... Die Klassen Caption und IPAddress sind in der WMI von Win2000 vorhanden.

soulies 19. Jun 2008 08:43

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
hi,

Zitat:

Da muss doch noch was gehn oder?
eine andere idee wär vllt. einen konsolen ouput einzufangen und anhand der daten
dann damit zu arbeiten.

ich mein: 1. programm start -> dos: z.B. 'ipconfig /all' -> output einfangen (funktion gibt es schon)
2. den output aufbereiten (ethernetadapter = Name der Verbindung,
Adapter = Adapter Name,
IpAdressen)
3. die aufbereiteten daten in einer liste halten und je nach wunsch drauf zugreifen

wie gesagt, nur ne idee


win2000 : wird hier wirklich alles gleich geschrieben ? testen kann ich es nicht ...


cya

SaltJohn 19. Jun 2008 09:02

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Leider nicht. Also eigentlich sollte es gehen habe die Klassen auf beiden Systemen mit WMI-Demo überprüft. Kannst du mir diesen Ausruck mal genauer erklären?

Delphi-Quellcode:
'Select * from '+ WMI_ClASS +' where caption like '+#39+#37+Adapter+#39,'WQL',0,nil);
Was ich mit einer anderen Lösung meinte ist, dass ich immer noch nicht verstehe warum ich nicht alleine mit meiner Funktion an die IP-adresse rankomme.

Man müsste doch nur irgendwie IPAddress so bearbeiten dass ich den String mit der IP erhalte.

Delphi-Quellcode:
function getIPAdr(nt: TNetworktype): string;

var
 wmi : variant;
 wmiService : variant;
 nicstatus : variant;
 card : Olevariant;
 cnt : integer;
 Enum: IEnumVariant;
 P : IUnknown;
 F : Cardinal;
 cardCap : String;
 IPAdresse : String

begin

  WMI:=CreateOleObject('WbemScripting.SWbemLocator');
  wmiService := wmi.ConnectServer('.', 'root\CIMV2');
  nicstatus := wmiService.InstancesOf('Win32_NetworkAdapterConfiguration');
  p := nicstatus._NewEnum;
  p.QueryInterface(IEnumVariant, Enum);
  for cnt := 0 to nicstatus.Count - 1 do
   begin
     Enum.Next(1, card, F);
     cardCap := Copy(card.Caption, 12, MaxInt);
     if cardCap = FAdapter[nt] then
        begin
        IPAdresse := //Hier muss irgendwie über card.IPAdress und einer umwandlung in String die IPAdresse initialisiert werden         
          result := IPAdresse
          break;
        end
   end;

end;

soulies 19. Jun 2008 09:17

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Zitat:

'Select * from '+ WMI_ClASS +' where caption like '+#39+#37+Adapter+#39
entspricht als Beispiel:

SQL-Code:
Select * Win32_NetworkAdapterConfiguration Where Caption like '%SIS Ethernet Adapter'
% = eine Wildcard, ein Platzhalter da davor ja noch [000000xx] steht - % in Verbindung mit like

Caption istals string abgelegt, deshalb in der anfrage das #39, man kann auch mit QuotedStr arbeiten

letzlich will also alle daten haben wo der name des adapters 'SIS Ethernet ...' beinhaltet


cya

soulies 19. Jun 2008 09:23

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
ich glaub ich habs jetzt so wie du es willst ...

Delphi-Quellcode:
function GetIPAddress : string;
var
wmi : variant;
wmiService : variant;
nicstatus : variant;
card : Olevariant;
cnt : integer;
Enum: IEnumVariant;
P : IUnknown;
F : Cardinal;
cardCap : String;
strSettingID : String;
i : integer ;
begin

  WMI:=CreateOleObject('WbemScripting.SWbemLocator');
  wmiService := wmi.ConnectServer('.', 'root\CIMV2');
  nicstatus := wmiService.InstancesOf('Win32_NetworkAdapterConfiguration');
  p := nicstatus._NewEnum;
  p.QueryInterface(IEnumVariant, Enum);
  for cnt := 0 to nicstatus.Count - 1 do
   begin
     Enum.Next(1, card, F);
     cardCap := Copy(card.Caption, 12, MaxInt);
     if cardCap = FAdapter then //Wenn Adapter in der jeweiligen Instanz gleich von mir definierter Adapter
        begin
          //result := getWMIValue('Win32_NetworkAdapterConfiguration','IPAddress','Marvell%');
          for i:=0 to vararraydimcount(card.ipaddress) do
              result := result + card.ipaddress[i] + ' ;' ;        
          break;
        end
   end;

end;
prüf mal ob es hinkommt, aber ob es unter w2000 läuft weiß ich net

cya

SaltJohn 19. Jun 2008 09:58

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Hi, perfekt! genau das isses :) Jetzt läuft soweit alles sowohl auf XP als auch auf 2k und ganz ohne zusätzliche Units. Danke!

Noch ne Frage: Die Leerstelle mit Semikolon hast du gemacht falls es mehrere IPs gibt oder?

Anstatt
Delphi-Quellcode:
result := result + card.ipaddress[i] + ' ;' ;
ginge doch auch
Delphi-Quellcode:
result := result + card.ipaddress[i];
oder?

soulies 19. Jun 2008 10:02

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Zitat:

Noch ne Frage: Die Leerstelle mit Semikolon hast du gemacht falls es mehrere IPs gibt oder?
richtig, denn bei mehreren wirds halt so ausgegeben: ip1 ; ip2 ;

Zitat:

Delphi-Quellcode:
result := result + card.ipaddress[i];

macht bei mehreren IP's: ip1ip2 -> (123.123.123.123456.456.456.456)

aber das kannst du ja bequem über vararraydimcount eingrenzen

cya

SaltJohn 19. Jun 2008 14:08

Re: Anzeigen der IPAdresse UND Name der Verbindung
 
Hi soulies,

läuft jetzt wirklich rund. Nochmal vielen Dank für die Hilfe und Geduld!


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz