<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>已经有一个程序可以做到了,但是我不太理解是怎么做到的,请问能有人好心解释一下吗?

解决方案 »

  1.   

    <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名称
    显示出来.