很简单的一个功能,想在PB中读取IP地址,和MAC地址。
在百度上没有现成的代码可以复制。
只能把VC的代码转成自己的PB代码,这样方便使用。
OK,在这里发个文章,留个备份,以后用得到。
function long GetAdaptersInfo( ref ip_adapter_info pAdapterInfo, ref ULONG pOutBufLen) library 'Iphlpapi.dll'
SUBROUTINE CopyMemory(ref ip_addr_string pDesc, ulong pSrc,ulong size) LIBRARY "kernel32" ALIAS FOR "RtlMoveMemory"
SUBROUTINE CopyMemory(ref string pDesc, ulong pSrc,ulong size) LIBRARY "kernel32" ALIAS FOR "RtlMoveMemory"
//====================================================================
// 修改: 获取当前电脑的的IP信息和网卡址
//
//--------------------------------------------------------------------
// 作者: XiaoFeng 日期: 2021年12月08日
//====================================================================
// 本代码调试环境 :windows 7 x64,一张网卡,2个IP地址。
IP_ADAPTER_INFO pIpAdapterInfo
LONG ret
ULONG stSize
string s,mac
int idx
integer data
stSize = 0
ret = GetAdaptersInfo(pIpAdapterInfo, stSize);
if ret = 111 then
GetAdaptersInfo(pIpAdapterInfo, stSize);
end if
s = pIpAdapterInfo.adaptername
lb_1.additem(s)
s = pIpAdapterInfo.description
lb_1.additem(s)
for idx =1 to upperbound(pIpAdapterInfo.address[])
data = asc(pIpAdapterInfo.address[idx])
mac= mac + ToHex(pIpAdapterInfo.address[idx]) + "-"
next
lb_1.additem(mac)
debugbreak()
string ls_ipaddr ,ls_mask
ls_ipaddr = "IP:" + pIpAdapterInfo.ipaddresslist.ipaddress.string
lb_1.additem(ls_ipaddr)
ls_mask = "Mask:" + pIpAdapterInfo.ipaddresslist.ipmask.string
lb_1.additem(ls_mask)
ip_addr_string ipaddr
//这是一行神奇的代码
/
copymemory(ipaddr,pIpAdapterInfo.ipaddresslist.pnext,40)
/
ls_ipaddr = "IP:" + ipaddr.ipaddress.string
lb_1.additem(ls_ipaddr)
ls_mask = "Mask:" + ipaddr.ipmask.string
lb_1.additem(ls_mask)
,
现成的源代码下载