用JS提取电脑的mac地址

yansiqi816 2008-08-06 07:08:27
<html>
<head>
<title>WMI Scripting HTML</title>
<script FOR="foo" EVENT="OnCompleted(hResult,pErrorObject, pAsyncContext)" LANGUAGE="JScript">

document.forms[0].txtMACAddr.value=unescape(MACAddr);
document.forms[0].txtIPAddr.value=unescape(IPAddr);
document.forms[0].txtDNSName.value=unescape(sDNSName);
//document.formbar.submit();
</script>

<script FOR="foo" EVENT="OnObjectReady(objObject,objAsyncContext)" LANGUAGE="JScript">

if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true)
{

if(objObject.MACAddress != null && objObject.MACAddress != "undefined")
MACAddr = objObject.MACAddress;

if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined")
IPAddr = objObject.IPAddress(0);

if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined")
sDNSName = objObject.DNSHostName;

}
</script>
</head>
<body>
<object classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" id="locator" VIEWASTEXT>
</object>
<object classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223" id="foo">
</object>

<script LANGUAGE="JScript">
var service = locator.ConnectServer();
var MACAddr ;
var IPAddr ;
var DomainAddr;
var sDNSName;
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
</script>


<form method="POST" action="NICPost.asp" id="formfoo" name="formbar">

<input type=text name="txtMACAddr">
<input type=text name="txtIPAddr">
<input type=text name="txtDNSName">

</form>
</body>
</html>

已经有一个程序可以做到了,但是我不太理解是怎么做到的,请问能有人好心解释一下吗?
...全文
753 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mayuanfei 2008-08-08
  • 打赏
  • 举报
回复
那给分吧
yansiqi816 2008-08-08
  • 打赏
  • 举报
回复
谢谢你啊!终于明白一点了,呵呵。谢谢
mayuanfei 2008-08-07
  • 打赏
  • 举报
回复
<object classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" id="locator" VIEWASTEXT>
</object>
<object classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223" id="foo">
</object>
上面两句诗用到了ActiveX控件,说实话也只有调用ActiveX控件才能做这么底层的事情.但是缺点是已经要用户允许才能运行.

<script LANGUAGE="JScript">
var service = locator.ConnectServer();
var MACAddr ;
var IPAddr ;
var DomainAddr;
var sDNSName;
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
</script>
这是调用的是id="locator"的控件的ConnectServer();
定义了mac地址,ip地址,域, DNS名称,安全级别五个变量.
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration'); 调用serveice的InstancesOfAsync方法,不知道具体干什么,
但是这个Win32_NetworkAdapterConfiguration能把上面五个变量填好后传给id为foo的activeX控件.

<script FOR="foo" EVENT="OnObjectReady(objObject,objAsyncContext)" LANGUAGE="JScript">

if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true)
{

if(objObject.MACAddress != null && objObject.MACAddress != "undefined")
MACAddr = objObject.MACAddress;

if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined")
IPAddr = objObject.IPAddress(0);

if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined")
sDNSName = objObject.DNSHostName;

}
</script>
这里了针对id是foo的控件的处理.EVENT="OnObjectReady.."就是在上面server已经把值传过去后,这里只得到MACAddr,IPAddr和DNS名称.

<script FOR="foo" EVENT="OnCompleted(hResult,pErrorObject, pAsyncContext)" LANGUAGE="JScript">

document.forms[0].txtMACAddr.value=unescape(MACAddr);
document.forms[0].txtIPAddr.value=unescape(IPAddr);
document.forms[0].txtDNSName.value=unescape(sDNSName);
//document.formbar.submit();
</script>
最后才是执行这里,EVENT="OnCompleted.."就是等上面的工作都处理完后才执行这里,很简单,就是把给页面的元素赋值,把上面得到的MACAddr,IPAddr和DNS名称
显示出来.

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧