| Autor |
Beitrag |
mexx
      
Beiträge: 1183
|
Verfasst: Fr 11.04.08 10:57
Hallo,
ich weiß, dass es schon einige Beiträge zu diesen Thema gibt, aber keiner behandelt beides zusammen. Ich habe nach langer Suche diesen Code gefunden und verwende diesen auch, um die MACs meiner aktiven Netzwerkkarten auszulesen.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94:
| ... uses NB30 ... function GetMacAddress(AdapterID : Integer) : String; type TAdapterStatusA = record Adapt : TAdapterStatus; NameBuff : array[0..30] of TNameBuffer; end; var NCB :TNCB; ReturnCode :Char; AdapterStatus :TAdapterStatus; begin FillChar( NCB, SizeOf(NCB), 0 );
NCB.ncb_command := Char(NCBRESET); NCB.ncb_lana_num := Char(AdapterID);
ReturnCode := NetBios(@NCB);
if ReturnCode <> #0 then begin Result:=Char(Ord(ReturnCode)*-1); Exit; end;
FillChar( NCB, SizeOf(NCB), 0 );
NCB.ncb_command := Char(NCBASTAT); NCB.ncb_lana_num := Char(AdapterID); NCB.ncb_buffer := @AdapterStatus; NCB.ncb_length := SizeOf(AdapterStatus); StrCopy(NCB.ncb_callname, '* ' );
ReturnCode := Netbios( @NCB );
if ReturnCode <> #0 then begin Result:=Char(Ord(ReturnCode)*-1); Exit; end;
result:=Format('%2.2x-%2.2x-%2.2x-%2.2x-%2.2x-%2.2x', [ORD(AdapterStatus.Adapter_address[0]), ORD(AdapterStatus.Adapter_address[1]), ORD(AdapterStatus.Adapter_address[2]), ORD(AdapterStatus.Adapter_address[3]), ORD(AdapterStatus.Adapter_address[4]), ORD(AdapterStatus.Adapter_address[5])]) end;
function GetAdapters: TLanaEnum; var NCB :TNCB; LanaEnum :TLanaEnum; ReturnCode :Char;
begin FillChar(NCB, SizeOf(NCB), 0); FillChar(LanaEnum, SizeOf(TLanaEnum), 0);
NCB.ncb_Command := CHAR(NCBENUM); NCB.ncb_buffer := @LanaEnum; NCB.ncb_length := Sizeof(LanaEnum);
ReturnCode := NetBios(@NCB);
if ReturnCode <> #0 then begin LanaEnum.Length := CHAR(0); LanaEnum.Lana[0] := ReturnCode; end;
Result := LanaEnum; end;
procedure TForm1.FormCreate(Sender: TObject); var L_Enum :TLanaEnum; i :INTEGER; begin L_Enum := GetAdapters;
if L_Enum.Length = '0' then begin Exit; end;
for i:= 0 to (BYTE(L_Enum.Length) - 1) do begin ListBox1.Items.Add(getMACaddress(BYTE(L_Enum.Lana[i]))); end; end; |
Ich muss an der Stelle aber auch sagen, dass ich mit der Unit NB30 und der TLanaEnum nicht viel anfangen kann, bin aber der Ansicht, dass man mit diesen Code auch ganz einfach die IP-Adresse zu den gefunden Adapter rausfinden kann. Weiss jemand wie oder kennt jemand Links, wo ich mir das anlesen kann?
Danke für eure Hilfe!
_________________ Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mi 16.04.08 15:20
Müsste der Vergleich in Zeile 84 nicht auf #0 statt '0' prüfen???
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 17.04.08 12:14
Moin!
mexx hat folgendes geschrieben: | | Weiss jemand wie oder kennt jemand Links, wo ich mir das anlesen kann? |
IPHLPAPI
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Ricster
Hält's aus hier
Beiträge: 14
Windows XP
Delphi 2007
|
Verfasst: Do 17.04.08 12:20
Hallo, dass wird dir sicher helfen
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83:
| uses NB30, WinSock, IdHTTP;
[...]
function GetMACAddress(): string; function GetAdapterInfo(Lana: Char): string; var AdapterStatus: TAdapterStatus; NCB: TNCB; begin FillChar(NCB, SizeOf(NCB), 0); NCB.NCB_COMMAND := Char(NCBRESET); NCB.NCB_LANA_NUM := Lana; if NetBios(@NCB) <> Char(NRC_GOODRET) then begin Result := '- MAC not found -'; Exit; end;
FillChar(NCB, SizeOf(NCB), 0); NCB.NCB_COMMAND := Char(NCBASTAT); NCB.NCB_LANA_NUM := Lana; NCB.ncb_callname := '*';
FillChar(AdapterStatus, SizeOf(AdapterStatus), 0); NCB.ncb_buffer := @AdapterStatus; NCB.ncb_length := SizeOf(AdapterStatus); if NetBios(@NCB) <> Char(NRC_GOODRET) then begin Result := '- MAC not found -'; Exit; end;
Result := IntToHex(Byte(AdapterStatus.Adapter_Address[0]), 2) + '-' + IntToHex(Byte(AdapterStatus.Adapter_Address[1]), 2) + '-' + IntToHex(Byte(AdapterStatus.Adapter_Address[2]), 2) + '-' + IntToHex(Byte(AdapterStatus.Adapter_Address[3]), 2) + '-' + IntToHex(Byte(AdapterStatus.Adapter_Address[4]), 2) + '-' + IntToHex(Byte(AdapterStatus.Adapter_Address[5]), 2); end;
var AdapterList: TLanaEnum; NCB: TNCB; begin Result := '';
FillChar(NCB, SizeOf(NCB), 0); NCB.ncb_command := Char(NCBENUM); NCB.ncb_buffer := @AdapterList; NCB.ncb_length := SizeOf(AdapterList); Netbios(@NCB); if Byte(AdapterList.length) > 0 then Result := GetAdapterInfo(AdapterList.lana[0]) else Result := '- MAC not found -'; end;
function GetInternetIP(): string; var Temp: string; begin Result := ''; Temp := IdHTTP1.Get('http://checkip.dyndns.org'); Result := Copy(Temp, Pos(':', Temp) + 2, Pos('</bo', Temp) - Pos(':', Temp) - 2); end;
function GetNetworkIP(): string; var WSA: TWSAData; Len: Integer; PHost: PChar; HostEnt: PHostEnt; begin Result := '';
WSAStartup($0101, WSA); Len := $FF; PHost := StrAlloc(Len); GetHostName(PHost, Len); HostEnt := GetHostByName(PHost);
with HostEnt^ do Result := Format('%d.%d.%d.%d', [Ord(H_Addr^[0]), Ord(H_Addr^[1]), Ord(H_Addr^[2]), Ord(H_Addr^[3])]);
StrDispose(PHost); WSACleanup; end; |
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 17.04.08 12:44
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Ricster
Hält's aus hier
Beiträge: 14
Windows XP
Delphi 2007
|
Verfasst: Do 17.04.08 14:53
Ich kenn mich mit Netzwerk und Internet eben nicht so aus  Gut das es immer jemand gibt der es besser weiß 
|
|
|