vlax创建对象???
大家好,1、我如何理解哪些课程可以上:
(vlax创建对象“WbemScripting.SWbemLocator”)
(vlax创建对象“Scripting.FileSystemObject”)
....
等等
2、有没有办法得到真正的硬盘号?
谢谢
你是说硬盘的序列号吗?
如果是这样,使用DOSLIB的(dos\u serialno)是一种选择。 试试这个
调用它并传递一个驱动器号,如“C”
注意:驱动器序列号由操作系统分配,因此如果重新格式化驱动器,序列号将不同。
(defun VxGetDriveInfos (Drv / DrvObj FilSys RetVal)
(setq FilSys (vlax-create-object "Scripting.FileSystemObject")
RetVal (cond
((= (vlax-invoke FilSys "DriveExists" Drv) 0) 0)
((setq DrvObj (vlax-invoke FilSys "GetDrive" Drv))
(cond
((= (vlax-get DrvObj "IsReady") 0) -1)
((list
(/(vlax-get DrvObj "TotalSize") 1000.0)
(/(vlax-get DrvObj "FreeSpace") 1000.0)
(vlax-get DrvObj "DriveType")
(vlax-get DrvObj "FileSystem")
(vlax-get DrvObj "SerialNumber")
(vlax-get DrvObj "ShareName")
(vlax-get DrvObj "VolumeName")
)
)
)
)
)
)
(if DrvObj (vlax-release-object DrvObj))
(vlax-release-object FilSys)
RetVal
)
当我使用下一个代码时
(setq bbb (vlax-get-property (vlax-invoke (vlax-create-object "Scripting.FileSystemObject") 'Getdrive "c:") "SerialNumber" ))
我收到“142782703”,但这不是正确的硬盘序列号
如何使用此DOSLIB? .......
多斯利卜 另一个:
(defun DiskDriveSerial (/ WMI Serv DiskD item prop ser)
(vl-load-com)
;; Lee Mac~13.05.10
(setq WMI (vlax-create-object "WbemScripting.SWbemLocator")
Serv (vlax-invoke WMI'ConnectServer nil nil nil nil nil nil nil nil)
DiskD(vlax-invoke Serv 'ExecQuery "Select SerialNumber from Win32_DiskDrive"))
(vlax-for item DiskD
(vlax-for prop (vlax-get item 'Properties_)
(if (eq "SerialNumber" (vlax-get prop 'Name))
(setq ser (vlax-get prop 'Value))
)
)
)
(mapcar 'vlax-release-object (list DiskD Serv wmi))
ser)
李,你的意见对我来说是零。我想知道这是否与你运行Vista有关。
这是我划出的一个,它使用了与上面发布的方法基本相同的方法。
我很好奇你的返回是否与你机器上的这个相同。
另一件奇怪的事是,我发布的返回的数字与DosLib返回的不同。
如。
Command: (driveserial "c")
150345461
Command: (dos_serialno "c")
"08F616F5" 我不知道为什么它会返回零。。。也许另一位大师可以加入。。。
至于您的另一个查询,请记住DriveObject的SerialNumber属性将以十进制返回,DosLib可能以十六进制返回?
(defun DiskDriveSerial ( Drv / toBase Scr ser )
(defun toBase ( str from to / -> <- toChar )
;; Lee Mac~01.05.10
(defun -> ( n / b x )
(if (<= to n)
(strcat (-> (/ n to)) (-> (rem n to)))
(toChar n)
)
)
(defun <- ( l )
(if l
(+ (* from (<- (cdr l))) (car l)) 0
)
)
(defun toChar ( n ) (chr (+ n (if (< n 10) 48 55))))
(->
(<-
(mapcar
(function
(lambda ( x )
(- x (if (< x 58) 48 55))
)
)
(reverse
(vl-string->list str)
)
)
)
)
)
(setq Scr (vlax-create-object "Scripting.FileSystemObject")
ser (vlax-get (vlax-invoke Scr 'Getdrive Drv) 'SerialNumber))
(vlax-release-object Scr)
(toBase (vl-princ-to-string ser) 10 16)
)
这将仅限于为序列号分配的大小
页:
[1]
2