Delphi-PRAXiS
Seite 3 von 3     123   

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)

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 12:49 Uhr.
Seite 3 von 3     123   

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