明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3137|回复: 15

如何在LSP中提取计算机信息

  [复制链接]
发表于 2004-8-13 16:26:00 | 显示全部楼层 |阅读模式
如何在LSP中用哪个变量可以提取计算机的信息。


比如操作系统的版本、CPU的主频、硬盘的大小、分区,内存信息等等!~


谢谢!~
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2004-8-13 17:25:00 | 显示全部楼层
(vlax-dump-object (vlax-create-object "Scripting.FileSystemObject") T)
; IFileSystem3: FileSystemObject
;性质值:
; Drives (RO) = #<VLA-OBJECT IDriveCollection 02bc8fb0>
;支援的方法:
; BuildPath (2)
; CopyFile (3)
; CopyFolder (3)
; CreateFolder (1)
; CreateTextFile (3)
; DeleteFile (2)
; DeleteFolder (2)
; DriveExists (1)
; FileExists (1)
; FolderExists (1)
; GetAbsolutePathName (1)
; GetBaseName (1)
; GetDrive (1)
; GetDriveName (1)
; GetExtensionName (1)
; GetFile (1)
; GetFileName (1)
; GetFileVersion (1)
; GetFolder (1)
; GetParentFolderName (1)
; GetSpecialFolder (1)
; GetStandardStream (2)
; GetTempName ()
; MoveFile (2)
; MoveFolder (2)
; OpenTextFile (4)
(vlax-dump-object (vlax-create-object "WScript.Shell") T)
; IWshShell2: Shell Object Interface
;无性质
;支援的方法:
; AppActivate (3)
; LogEvent (4)
; SendKeys (2) (setq WSHSHELL (vlax-create-object "WScript.Shell"))
(setq WSHSYSENV (vlax-get-property WSHSHELL 'ENVIRONMENT "Process"))
(vlax-get-property WSHSYSENV 'ITEM "HOMEDRIVE")
(vlax-get-property WSHSYSENV 'ITEM "TEMP")
(vlax-get-property WSHSYSENV 'ITEM "PATH")
(vlax-get-property WSHSYSENV 'ITEM "PROCESSOR_IDENTIFIER")
(vlax-get-property WSHSYSENV 'ITEM "PROCESSOR_ARCHITECTURE")
(vlax-get-property WSHSYSENV 'ITEM "PROCESSOR_REVISION")
 楼主| 发表于 2004-8-13 17:57:00 | 显示全部楼层
对不起,龙版,我比较笨,你可以再详细的说一下吗?
发表于 2004-8-13 22:14:00 | 显示全部楼层
本帖最后由 作者 于 2004-8-14 11:12:48 编辑
  1. ;;Author: Alin 13/8/04
  2. ;;
  3. (defun getSysInfo   (/             shell  cpulv     cpusp         memory
  4.            driveinfo FSO  drives     drv         drvtyp
  5.            tolsize     freespace)
  6.    (vl-load-com)
  7.    (setq FSO (vlax-create-object "Scripting.FileSystemObject"))
  8.    (setq drives (vlax-get-property FSO "drives"))
  9.    (setq drv "A:")
  10.    (repeat 26
  11.        (if  (= (vlax-invoke-method FSO 'DriveExists drv) :vlax-true)
  12.            (progn
  13.   (setq drvobj (vlax-get-property drives 'item drv))
  14.   (setq drvtyp (GetDrvType drvobj))
  15.   (setq tolsize (GetDrvSize drvobj 'TotalSize))
  16.   (setq freespace (GetDrvSize drvobj 'FreeSpace))
  17.   (setq driveInfo  (cons (strcat drv
  18.                    "   类型:"
  19.                    drvtyp
  20.                    "\t总大小:"
  21.                    (StrSize tolsize)
  22.                    "\t可用空间:"
  23.                    (StrSize freespace)
  24.                    "\n")
  25.                  driveInfo))
  26.   )
  27.            )
  28.        (setq drv (strcat (chr (1+ (ascii (substr drv 1 1)))) ":"))
  29.        )
  30.    (setq shell (vlax-create-object "Shell.Application"))
  31.    (setq  cpulv   (Getinfo "ProcessorLevel")
  32.   cpusp   (Getinfo "ProcessorSpeed")
  33.   memory (Getinfo "PhysicalMemoryInstalled"))
  34.    (if (= (type cpulv) 'INT)
  35.        (cond ((< cpulv 6)
  36.        (setq cpulv (strcat "x" (itoa cpulv) "86")))
  37.      ((= cpulv 6)
  38.        (setq cpulv "Prentium"))
  39.      (t "未知")
  40.      ))
  41.    (if (= (type cpusp) 'INT)
  42.        (setq cpusp (strcat (itoa cpusp) " MHz")))
  43.    (if (= (type memory) 'REAL)
  44.        (setq memory (strsize memory)))
  45.    (princ "\n系统:\t")
  46.    (if dos_ver
  47.        (princ (dos_ver))
  48.        (princ (getvar "PLATFORM"))
  49.      )
  50.    (princ "\n处理器:\t")
  51.    (princ cpulv)
  52.    (princ "\n速度:\t")
  53.    (princ cpusp)
  54.    (princ "\n内存:\t")
  55.    (princ memory)
  56.    (terpri)
  57.    (princ "\n磁盘空间分布:\n")
  58.    (mapcar 'princ (reverse driveInfo))
  59.    (vlax-release-object FSO)
  60.    (vlax-release-object shell)
  61.    (princ)
  62.    )
  63. ;;;
  64. (defun strsize  (size)
  65.    (if (member (type size) (list 'INT 'REAL))
  66.        (strcat (rtos (/ size 1.0e6) 2 2) " MB")
  67.        size)
  68.    )
  69. ;;;-----
  70. (defun GetInfo  (sname / catchit)
  71.    (if (vl-catch-all-error-p
  72.   (setq catchit (vl-catch-all-apply
  73.       'vlax-invoke-method
  74.       (list shell 'GetSystemInformation sname))))
  75.        "未知"
  76.        catchit
  77.        )
  78.    )
  79. ;;---
  80. (defun GetDrvSize   (drvobj sname / catchit)
  81.    (if (vl-catch-all-error-p
  82.   (setq catchit (vl-catch-all-apply
  83.       'vlax-get-property
  84.       (list drvobj sname))))
  85.        "未知       "
  86.        (vlax-variant-value catchit)
  87.        )
  88.    )
  89. ;;
  90. (defun GetDrvType   (drvobj / dt)
  91.    (setq dt (vlax-get-property drvobj "Drivetype"))
  92.    (cond  ((= dt 0)
  93.    "Unknown")
  94.   ((= dt 1)
  95.    "Removable")
  96.   ((= dt 2)
  97.    "Fixed")
  98.   ((= dt 3)
  99.    "Network")
  100.   ((= dt 4)
  101.    "CD-ROM")
  102.   ((= dt 5)
  103.    "Ram Stick")
  104.   (t
  105.    "未知")
  106.   )
  107.    )

评分

参与人数 1金钱 +5 贡献 +5 激情 +5 收起 理由
龙龙仔 + 5 + 5 + 5 【好评】好程序

查看全部评分

 楼主| 发表于 2004-8-15 08:22:00 | 显示全部楼层
对不起,我还是看不太懂
发表于 2004-8-16 08:20:00 | 显示全部楼层
alin发表于2004-8-13 22:14:00;;Author: Alin 13/8/04;;(defun getSysInfo   (/             shell  cpulv     cpusp         memory           driveinfo FSO  drives     drv        ...
  1. (setq FSO (vlax-create-object "Scripting.FileSystemObject"))
  2.    (setq drives (vlax-get-property FSO "drives"))
  1. ;;drives collection已取得,就不用repeat 26次吧!
复制代码
发表于 2004-8-16 08:40:00 | 显示全部楼层
用4楼的程序 _$ 系统: Microsoft Windows NT Version 5.1 (x86)
处理器: 15
速度: 未知
内存: 536.33 MB 磁盘空间分布:
C:类型:Fixed 总大小:10466.73 MB 可用空间:3532.05 MB
D:类型:Fixed 总大小:20964.2 MB 可用空间:4946.44 MB
E:类型:Fixed 总大小:20964.2 MB 可用空间:929.27 MB
F:类型:Fixed 总大小:29506.09 MB 可用空间:7331.55 MB
G:类型:CD-ROM 总大小:未知 可用空间:未知
_$
发表于 2004-8-16 10:15:00 | 显示全部楼层
Some methods for FSO object don't work for me, such as MoveFolder and Getdrive, why? Lucas, I cannot find a better way to retrieve the drive info from the drive collection Drives. The Drives collection has no methods.
发表于 2004-8-16 10:45:00 | 显示全部楼层
这个程序真的很不错。lucas和alin真不愧是高手啊。
发表于 2004-8-16 12:40:00 | 显示全部楼层
alin发表于2004-8-16 10:15:00Some methods for FSO object don't work for me, such as MoveFolder and Getdrive, why? Lucas, I cannot find a better way to retrieve the drive info f...
参考下列 dispbbs.asp?BoardID=3&ID=11083&replyID=46333&skin=1 ;;By LUCAS(龙龙仔)
;;列出所有磁碟机
(defun LIST_DRIVE (/ SYS LIST_DRIVE ENT LST)
(setq SYS (vlax-create-object "Scripting.FileSystemObject"))
(setq LIST_DRIVE (vlax-get-property SYS 'DRIVES))
(vlax-for ENT LIST_DRIVE
(setq
LST (append
LST
(list (strcat (vlax-get-property ENT 'DRIVELETTER) ":"))
)
)
)
(vlax-release-object LIST_DRIVE)
(vlax-release-object SYS)
LST
)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-18 22:44 , Processed in 0.186888 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表