Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi MAC Adresse aller Netzwerk Karten ermitteln (https://www.delphipraxis.net/65923-mac-adresse-aller-netzwerk-karten-ermitteln.html)

renekr 23. Mär 2006 08:50

Re: MAC Adresse aller Netzwerk Karten ermitteln
 
Cool .
Danke.

Habs grad getestet aber ich bekomme nur 1 MAC ( obwohl 3 Adapter drin sind ) raus oder 2 mal die gleiche an einem anderen PC.

danke

renekr 29. Mär 2006 10:46

Re: MAC Adresse aller Netzwerk Karten ermitteln
 
Hi,

Also i habs nun hinbekommen das ich alle Mac Adressse herausekomme ,aber nur die wo auch connected sind?
ist das normal?

Die Procedure GetIPAdresses in den JCL kann i nicht aufrufen?

mfg

mkinzler 29. Mär 2006 10:48

Re: MAC Adresse aller Netzwerk Karten ermitteln
 
Zitat:

Die Procedure GetIPAdresses in den JCL kann i nicht aufrufen?
Die gibts auch nur unter Linux.

renekr 29. Mär 2006 14:46

Re: MAC Adresse aller Netzwerk Karten ermitteln
 
Oh Danke.

Habe nun die GetIPs genommen.
Eigene (Internet)IP rausfinden

Aber wie gesagt da bekomme ich auch nur die IP heraus von den Adaptern wo aktiv sind also Connect haben.
Bei IP ist es ja gut aber bei MACs nicht,da könnte oder will ich alle MAcs wo im System sind.
Danke

renekr 3. Apr 2006 08:50

Re: MAC Adresse aller Netzwerk Karten ermitteln
 
Hi,
hat den niemand eine Idee.
Bin am verzweifeln hier.

Wie gesagt die Funktionen erkennen nur die Karten wenn diese connected sind.

danke

Klaus01 3. Apr 2006 09:28

Re: MAC Adresse aller Netzwerk Karten ermitteln
 
Delphi-Quellcode:
unit MACAddress;

interface

uses SysUtils;

type
  TMACAddress = packed array[0..5] of Byte;
 
  ENetBiosError = class(Exception);

function LanAdapterCount : Integer;

function GetMacAddress(AdapterNum: Integer):TMACAddress;


implementation

uses NB30, Windows;

resourcestring
  sNetBiosError = 'NetBIOS error %d';

type
  TAStat = record
    Adapt   : TAdapterStatus;
    NameBuff : array[0..30] of TNameBuffer;
  end;

function LanAdapterCount : Integer;
var
  Ncb : TNCB;
  uRetCode : Char;
  lEnum : TLanaEnum;
begin
  FillChar( NCB, SizeOf(NCB), 0 );
  with NCB do begin
    ncb_command := Char( NCBENUM );
    ncb_buffer := @lEnum;
    ncb_length := SizeOf(lEnum);
  end;
  uRetCode := Netbios( @Ncb );
  if uRetCode <> #0 then
   raise Exception.CreateFmt( sNetBIOSError,
                                      [Ord(uRetCode)]);
  Result := Ord(lenum.length);
end;

function GetMacAddress(AdapterNum:Integer):TMACAddress;
var
  Ncb : TNCB;
  uRetCode : Char;
  J : Integer;
  Adapter : TAStat;
begin
  FillChar( NCB, SizeOf(NCB), 0 );
  with NCB do begin
    ncb_command := Char(NCBRESET);
    ncb_lana_num := Char( AdapterNum );
  end;
  uRetCode := Netbios( @Ncb );
  if uRetCode <> #0 then
   raise Exception.CreateFmt(sNetBIOSError,
                                     [Ord(uRetCode)]);
  FillChar( NCB, SizeOf(NCB), 0 );
  with NCB do begin
    ncb_command := Char(NCBASTAT);
    ncb_lana_num := Char( AdapterNum );
    StrCopy( ncb_callname, '*                ' );
    ncb_buffer := @Adapter;
    ncb_length := sizeof(Adapter);
  end;
  uRetCode := Netbios( @Ncb );
  if uRetCode <> #0 then
   raise Exception.CreateFmt(sNetBIOSError,
                                     [Ord(uRetCode)]);
  for J := 0 to 5 do
   Result[J] := Ord( Adapter.Adapt.Adapter_address[J]);
end;
Was gibt Dir denn LanAdaptorCount zurück, nur die Interfaces die "online" sind oder alle.

Wenn es funktioniert, der Hinweis wurde schon mal weiter oben gepostet.

Grüße
Klaus

renekr 3. Apr 2006 09:39

Re: MAC Adresse aller Netzwerk Karten ermitteln
 
Hi,
Erstmal Dank.

Habe ja schon das gesamt Forum bgesucht und alles getestet.

Leider bekomme ich nur Lan Count 1 raus.

Wenn ich meine Wlan aktiviere das er connected ist habe ich 2.

Will aber immer alle auslesen ( Soll so ein Inventory Tool geben ) .

Die Adapter sind alle Enabled nur nicht connectd.


PS: Wie handle ich die TMAcAdress ? TMACAddress = packed array[0..5] of Byte;

:wall:
Danke.

Klaus01 3. Apr 2006 10:03

Re: MAC Adresse aller Netzwerk Karten ermitteln
 
die Mac-Adresse besteht aus 5 Byte.
Die Mac-Adresse die Du kennst, siehst Du
als Hex dargestellt.
Wenn Du die 5 Byte , byteweise nach Hex wandelst
bekommst Du die Mac-Adresse wie Du sie gewohnt bist.

Siehst Du denn die Mac-Adresse Deines WLAN Adpaters
wenn er nicht connected ist mit ipconfig /all
in der Console.

Grüße
Klaus

renekr 3. Apr 2006 10:06

Re: MAC Adresse aller Netzwerk Karten ermitteln
 
Danke.

IPconfig / all ist alles ok.

Selbst mit der JclSysInfo-GetMacAddresses.
bekomme ich nur die aktiven.

Klaus01 3. Apr 2006 10:38

Re: MAC Adresse aller Netzwerk Karten ermitteln
 
vielleicht hilft Dir ja iphlpapi.dll aus der Klemme
da gibt es die Funktion GetIfTable die alle Interfaces
auflisten soll.
Habe ich aber nicht selbst ausprobiert.
Hier der Link zu Doku -> http://windowssdk.msdn.microsoft.com..._reference.asp

[edit1]
Und hier ein Beipspiel wie man sie verwendet.
http://www.delphipraxis.net/internal...ct.php?t=42992
http://www.delphipraxis.net/internal...light=iphlpapi
In den threads findest Du auch die dll und auch eine iphlpapi.pas

[/edit1]

[edit2]
ein Beispiel mit GetIfTable -> http://www.delphipraxis.net/internal...t.php?p=205634
und noch eines -> http://www.delphi-forum.de/viewtopic.php?t=1536
[/edit2]

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:03 Uhr.
Seite 2 von 4     12 34      

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