EDIT: Avevo risposto con una castronata .... perdonatemi ma sono ... vecchio .... ;D
Risposta cancellata e riscritta.
Puoi usare il seguente codice, usando Indy10 (questo per Windows, però sostituendo IdStackWindows con IdStackLinux dovrebbe funzionare anche sotto Linux):
Indy10 lo puoi installare tramite l'ONLINE PACKAGE MANAGER di Lazarus.
Uses IdStackWindows, IdStack;
function GetLocalIpList(Name:string): TStringList;
var ElencoIP: TStringList;
function GetLocalIpList(Name: string): TStringList;
var Lista: TIdStackLocalAddressList;
GProva: TIdStackWindows;
temp: TIdStackLocalAddress;
begin
result := TStringList.Create;
try
Lista := TIdStackLocalAddressList.Create;
GProva := TIdStackWindows.Create;
GProva.GetLocalAddressList(Lista);
for temp in Lista do
if temp is TIdStackLocalAddressIPv4 then
result.add((temp as TIdStackLocalAddressIPv4).IPAddress);
GProva.Free;
Lista.Free;
except on e:exception do
;
end;
end;
.....
ElencoIP := GetLocalIpList('');
.....
In ElencoIP ti trovi n. elementi stringa con gli indirzzi IP assegnati (SOLO SE LE NIC SONO CONNESSE).
Se scorri gli elementi (IP formato string 'xxx.xxx.xxx.xxx.') dovresti capire dove sei ...
Io lo uso da anni senza problemi.
Ciao
Grazie a tutti e 2 per la risposta.
Tendo ad installare meno componenti aggiuntivi possibile, per cui per il momento provo con "ipconfig".
Se dovesse servire ad altri in futuro, nel frattempo avevo anche trovato questo comando:
netsh wlan show interfaces
Leggendone l'output, sulla riga SSD c'è anche il nome della rete wifi a cui si è connessi.
Stasera a casa faccio qualche prova col cavo di rete inserito, con wifi acceso e spento, e provo sia questo comando che ipconfig, e vedo quale dei 2 mi da le risposte più efficaci.
Ciao, Mario
Puoi usare il seguente codice, usando Indy10 (questo per Windows, però sostituendo IdStackWindows con IdStackLinux dovrebbe funzionare anche sotto Linux):
Ciao,
Stavo provando il tuo codice, ma mi da un errore in compilazione.
L'errore è questo:
BonMarIndy.pas(28,10) Error: Incompatible types: got "TCollectionItem" expected "TIdStackLocalAddress"
Lo da su questa riga:
Ho fatto una unit a parte, in cui c'è dentro solo il tuo codice e, oltre alle uses che hai messo tu, ho aggiunto "Classes"
EDIT: Sono riuscito a farlo andare ... ma ...
non fa quello che serve a me.
Probabilmente mi sono spiegato male, a me servirebbe un elenco delle reti wifi disponibili, come quello che esce su windows quando si clicca sul mappamondo che c'è di fianco all'orologio. Credo che il codice postato mi faccia l'elenco delle schede wifi presenti nel PC da cui si lancia.
Grazie, Mario