xiaxiang
发表于 2012-7-24 08:31:09
highflybird 发表于 2012-7-24 05:19 static/image/common/back.gif
受教了!请问一下“WbemScripting.SWbemLocator”是什么容器啊
xiaxiang
发表于 2012-7-24 09:01:06
本帖最后由 xiaxiang 于 2012-7-24 09:03 编辑
哈哈,研究了一下
通过WMI来实现获取客户端计算机硬件及系统信息
//系统信息获取
function getSysInfo(){
var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
var service = locator.ConnectServer(".");
//CPU信息
var cpu = new Enumerator (service.ExecQuery("SELECT * FROM Win32_Processor")).item();
var cpuType=cpu.Name,hostName=cpu.SystemName;
//内存信息
var memory = new Enumerator (service.ExecQuery("SELECT * FROM Win32_PhysicalMemory"));
for (var mem=[],i=0; !memory.atEnd(); memory.moveNext()) mem={cap:memory.item().Capacity/1024/1024,speed:memory.item().Speed}
//系统信息
var system=new Enumerator (service.ExecQuery("SELECT * FROM Win32_ComputerSystem")).item();
var physicMenCap=Math.ceil(system.TotalPhysicalMemory/1024/1024),curUser=system.UserName,cpuCount=system.NumberOfProcessors
return {cpuType:cpuType,cpuCount:cpuCount,hostName:hostName,curUser:curUser,memCap:physicMenCap,mem:mem}
}
代码实现主要包括这几部分:1. 先通过new ActiveXObject ("WbemScripting.SWbemLocator"); 访问到WbemScripting对象。
2. 通过locator.ConnectServer(".");连接我们本地电脑(.代表本地电脑,当然也可以访问其他计算机)。
3. 通过service.ExecQuery("SELECT * FROM Win32_Process")这个类似sql的语句(其实系统信息也是 存储在计算中一个类似数据库的文件中)获取我们需要的对象的记录集。
半听可乐
发表于 2012-7-24 09:23:22
highflybird 发表于 2012-7-24 05:19 static/image/common/back.gif
我试了怎么不管用呢?CAD2004,电脑是32位xp
hao3ren
发表于 2012-7-24 09:53:41
呵呵,关掉也很麻烦,用老板键可以快速切换
半听可乐
发表于 2012-7-24 10:54:11
highflybir 发表于 2012-7-23 15:22 static/image/common/back.gif
仅仅在64位上win7 ,IE8测试通过,未测试其他版本。
我试了,在CAD2004,电脑是32位xp环境下不管用,提示:错误: 参数类型错误: VLA-OBJECT nil
sunny20102
发表于 2012-7-24 14:45:34
To 15#
在第一行加入 (vl-load-com) 再试试
半听可乐
发表于 2012-7-24 15:02:21
sunny20102 发表于 2012-7-24 14:45 static/image/common/back.gif
To 15#
在第一行加入 (vl-load-com) 再试试
还是不行,问题依旧
xiaxiang
发表于 2012-7-24 15:10:55
半听可乐 发表于 2012-7-24 15:02 static/image/common/back.gif
还是不行,问题依旧
可将程序逐行拷至命令行执行
第一步
(setq SWbemLocator (vlax-create-object "WbemScripting.SWbemLocator"))依次查看返回值,就知道故障出在哪里
或者直接使用vlisp调试环境排错
华轩〈肖〉
发表于 2012-7-24 18:20:36
确实是很佩服版大的速度呀
preone
发表于 2012-7-24 20:41:29
highflybird 发表于 2012-7-24 05:19 static/image/common/back.gif
神人~~