QuiqueSalamanca,
Continuación del
Msg #9
Revisa este código:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ActiveX, ComObj;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetMacAddress(NetworkAdapter : String) : String;
const
wbemFlagForwardOnly = $00000020;
var
FSWbemLocator : OLEVariant;
FWMIService : OLEVariant;
FWbemObjectSet : OLEVariant;
FWbemObject : OLEVariant;
oEnum : IEnumvariant;
iValue : LongWord;
SQLWMI : String;
begin
SQLWMI := 'Select MACAddress From Win32_NetworkAdapter Where NetConnectionID = '
+ QuotedStr(NetworkAdapter);
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
FWbemObjectSet := FWMIService.ExecQuery(SQLWMI,'WQL',wbemFlagForwardOnly);
oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
if oEnum.Next(1, FWbemObject, iValue) = 0 then
begin
Result := String(FWbemObject.MACAddress);
FWbemObject := Unassigned;
end
else
Result := EmptyStr;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
MacAddress : String;
NetworkAdapter : String;
MsgApp : String;
begin
NetworkAdapter := 'Local Area Connection';
MacAddress := GetMacAddress(NetworkAdapter);
if MacAddress <> EmptyStr then
MessageDlg(MacAddress,mtInformation,[mbOK],0)
else
begin
MsgApp := Format('No Existe una NIC Asociada al Network Adapter : %s',[NetworkAdapter]);
MessageDlg(MsgApp,mtInformation,[mbOK],0)
end;
end;
end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32,
permite obtener el MacAddress de una NIC por medio del identificador de connección de red asociado, que se encuentra en : Control Panel -> Network and Internet -> Network Connections.
Espero sea útil
Nelson.