[Delphi]获取机器的Mac地址
来源:互联网 发布:八个字网络流行语 编辑:程序博客网 时间:2024/05/21 19:37
从网上搜罗来的一个函数,非常实用,贴出来带大家分享,也供自己查看。
//返回值是主机AServerName的MAC地址//AServerName参数的格式为\\ 或者 ServerName//参数ServerName为空时返回本机的MAC地址//MAC地址以XX-XX-XX-XX-XX-XX的格式返回//function GetMacAddress2(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;
阅读全文
0 0
- [Delphi]获取机器的Mac地址
- Delphi 获取Mac地址
- delphi 获取MAC地址
- delphi获取MAC地址的function()
- Delphi获取本机的MAC地址
- Delphi获取Mac地址方法
- DELPHI获取网卡MAC地址
- c# 获取机器mac地址
- 获取远程机器名与Mac地址的代码
- 获取机器网卡的物理(MAC)地址
- php获取服务器端机器网卡的物理(MAC)地址
- 获取linux机器的IP和mac地址
- Delphi自定义获取网卡MAC地址过程
- DELPHI获取网卡MAC地址 转
- 获取机器IP和MAC地址
- NSIS如何获取机器网卡Mac地址
- 扫描网卡,获取机器mac地址
- Java获取本地机器MAC地址
- xcode4.5(iOS 6)开发与之前的差异
- 多线程编程指南
- (OK) MIMP
- UIControl 控件简介
- bootstrap底部导航栏固定
- [Delphi]获取机器的Mac地址
- UITextField小结
- iOS系统高德地图的使用
- Android自定义View(一)
- 关于php在通信协议中的使用研究
- 高斯混合背景建模的改进方案
- Effective C++第五章-实现
- iphone 线程 NSCondition NSThread
- 微信浏览器禁止页面下拉查看网址(不影响页面内部scroll)