教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> 编程基地 >> Delphi >> 获得远程或本地机器的网卡的MAC RSS订阅
获得远程或本地机器的网卡的MAC
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   
   下面的函数以’XX-XX-XX-XX-XX-XX’ 的格式返回远程或本地机器的MAC地址。 
Function to return the MAC address of a remote or local machine in the format ’XX-XX-XX-XX-XX-XX’ 

返回的MAC地址是一个能用在多个方面的唯一标识。使用方法:
ShowMessage(GetMacAddress(’\\MHEYDON’); 
输出’00-02-08-E7-99-6B’

// ====================================================================== 
//返回值是主机AServerName的MAC地址
//AServerName参数的格式为’\\ServerName’ 或者 ’ServerName’ 
//参数ServerName为空时返回本机的MAC地址 
//MAC地址以’XX-XX-XX-XX-XX-XX’的格式返回
// ====================================================================== 

function GetMacAddress(const AServerName : string) : string; 
type 
TNetTransportEnum = function(pszServer : PWideChar; 
Level : DWORD; 
var pbBuffer : pointer; 
PrefMaxLen : LongInt; 
var EntriesRead : DWORD; 
var TotalEntries : DWORD; 
var ResumeHandle : DWORD) : DWORD; stdcall; 

TNetApiBufferFree = function(Buffer : pointer) : DWORD; stdcall; 

PTransportInfo = ^TTransportInfo; 
TTransportInfo = record 
quality_of_service : DWORD; 
number_of_vcs : DWORD; 
transport_name : PWChar; 
transport_address : PWChar; 
wan_ish : boolean; 
end; 

var E,ResumeHandle, 
EntriesRead, 
TotalEntries : DWORD; 
FLibHandle : THandle; 
sMachineName, 
sMacAddr, 
Retvar : string; 
pBuffer : pointer; 
pInfo : PTransportInfo; 
FNetTransportEnum : TNetTransportEnum; 
FNetApiBufferFree : TNetApiBufferFree; 
pszServer : array[0..128] of WideChar; 
i,ii,iIdx : integer; 
begin 
sMachineName := trim(AServerName); 
Retvar := ’00-00-00-00-00-00’; 

// Add leading \\ if missing 
if (sMachineName <> ’’) and (length(sMachineName) >= 2) then begin 
if copy(sMachineName,1,2) <> ’\\’ then 
sMachineName := ’\\’ + sMachineName 
end; 

// Setup and load from DLL 
pBuffer := nil; 
ResumeHandle := 0; 
FLibHandle := LoadLibrary(’NETAPI32.DLL’); 

// Execute the external function 
if FLibHandle <> 0 then begin 
@FNetTransportEnum := GetProcAddress(FLibHandle,’NetWkstaTransportEnum’); 
@FNetApiBufferFree := GetProcAddress(FLibHandle,’NetApiBufferFree’); 
E := FNetTransportEnum(StringToWideChar(sMachineName,pszServer,129),0, 
pBuffer,-1,EntriesRead,TotalEntries,Resumehandle); 

if E = 0 then begin 
pInfo := pBuffer; 

// Enumerate all protocols - look for TCPIP 
for i := 1 to EntriesRead do begin 
if pos(’TCPIP’,UpperCase(pInfo^.transport_name)) <> 0 then begin 
// Got It - now format result ’xx-xx-xx-xx-xx-xx’ 
iIdx := 1; 
sMacAddr := pInfo^.transport_address; 

for ii := 1 to 12 do begin 
Retvar[iIdx] := sMacAddr[ii]; 
inc(iIdx); 
if iIdx in [3,6,9,12,15] then inc(iIdx); 
end; 
end; 

inc(pInfo); 
end; 
if pBuffer <> nil then FNetApiBufferFree(pBuffer); 
end; 

try 
FreeLibrary(FLibHandle); 
except 
// 错误处理
end;
end;
result:=Retvar;
end;

来源:编程技术-十度教育
作者:
关键字:获得远程或本地机器,网卡,MAC
发表日期:2006-10-18 13:42:28

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:区分保留字跟关键字   下一篇:增强MIDAS的安全性


2008-8-30 21:27:04
本文的相类似文章
  • 快速启动 正确配置好网卡工作模式
  • 正确配置网卡模式 加快系统启动
  • 正确配置网卡工作模式 加速启动
  • 集成网卡面对面
  • 网卡安装常见问题一点通
  • 看图认识网卡躲避低价陷阱
  • 怎样识别正品Intel网卡
  • Mac引爆安全问题 修正20多处漏洞
  • 苹果修补Mac OS X的16个严重漏洞
  • 《Emacs 快速指南》最新简体中文版
  • 在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com