找回密码
 加入
搜索
楼主: hljkwan

[系统综合] 【已解决】怎么获取内存的品牌和几代

[复制链接]
发表于 2021-10-26 21:18:27 | 显示全部楼层
本帖最后由 sh1536 于 2021-10-26 21:21 编辑
#AutoIt3Wrapper_UseX64=n

#include <Array.au3>

$Result = _ComputerGetMemory()
MsgBox(0, "", @error ? @error : "运行正常")
_ArrayDisplay($Result, "WMI类 - Win32_PhysicalMemory 所有属性(内存条)", "", 0, Default, _
                        '属性|库标签|容量(单位KB)|描述|时钟速度|电压|类名|内存带宽|描述|设备定位器|' & _
                        '存在形式|是否支持热插拔|安装日期(无值)|数据交错深度|交错的位置|生产商|最大电压|' & _
                        '内存类型|最小电压|型号|名字|其他识别信息|零件编号|行位置|是否接通电源|是否可拆卸|' & _
                        '是否可更换|编号|SKU|SMBIOS内存类型|速率|状态|标签|总宽度(位)|类型详细信息|版本信息')

Func _ComputerGetMemory()
        ;https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-physicalmemory
        ;2021.07.01
        Local $wbemFlagReturnImmediately = 0x10
        Local $wbemFlagForwardOnly       = 0x20
        Local $cI_CompName = @ComputerName
        Local $colItems, $objWMIService, $objItem
        Dim $aMemoryInfo[1][36], $i = 1

        $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
        $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PhysicalMemory", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
        If IsObj($colItems) Then
                For $objItem In $colItems
                        ReDim $aMemoryInfo[UBound($aMemoryInfo) + 1][36]
;~                         $aMemoryInfo[$i][0]         = $objItem.Attributes           ;属性
;~                         $aMemoryInfo[$i][1]         = $objItem.BankLabel            ;库标签
                        $aMemoryInfo[$i][2]         = $objItem.Capacity             ;容量(单位KB)
                        $aMemoryInfo[$i][3]         = $objItem.Caption              ;描述
;~                         $aMemoryInfo[$i][4]         = $objItem.ConfiguredClockSpeed ;时钟速度
;~                         $aMemoryInfo[$i][5]         = $objItem.ConfiguredVoltage    ;电压
                        $aMemoryInfo[$i][6]         = $objItem.CreationClassName    ;类名
                        $aMemoryInfo[$i][7]         = $objItem.DataWidth            ;内存带宽
                        $aMemoryInfo[$i][8]         = $objItem.Description          ;描述
                        $aMemoryInfo[$i][9]         = $objItem.DeviceLocator        ;设备定位器
                        $aMemoryInfo[$i][10]        = $objItem.FormFactor           ;存在形式
                        $aMemoryInfo[$i][11]        = $objItem.HotSwappable         ;是否支持热插拔
                        $aMemoryInfo[$i][12]        = $objItem.InstallDate          ;安装日期(无值)
                        $aMemoryInfo[$i][13]        = $objItem.InterleaveDataDepth  ;数据交错深度
                        $aMemoryInfo[$i][14]        = $objItem.InterleavePosition   ;交错的位置
                        $aMemoryInfo[$i][15]        = $objItem.Manufacturer         ;生产商
;~                         $aMemoryInfo[$i][16]        = $objItem.MaxVoltage           ;最大电压
                        $aMemoryInfo[$i][17]        = $objItem.MemoryType           ;内存类型
;~                         $aMemoryInfo[$i][18]        = $objItem.MinVoltage           ;最小电压
                        $aMemoryInfo[$i][19]        = $objItem.Model                ;型号
                        $aMemoryInfo[$i][20]        = $objItem.Name                 ;名字
                        $aMemoryInfo[$i][21]        = $objItem.OtherIdentifyingInfo ;其他识别信息
                        $aMemoryInfo[$i][22]        = $objItem.PartNumber           ;零件编号
                        $aMemoryInfo[$i][23]        = $objItem.PositionInRow        ;行位置
                        $aMemoryInfo[$i][24]        = $objItem.PoweredOn            ;是否接通电源
                        $aMemoryInfo[$i][25]        = $objItem.Removable            ;是否可拆卸
                        $aMemoryInfo[$i][26]        = $objItem.Replaceable          ;是否可更换
                        $aMemoryInfo[$i][27]        = $objItem.SerialNumber         ;编号
                        $aMemoryInfo[$i][28]        = $objItem.SKU                  ;SKU
;~                         $aMemoryInfo[$i][29]        = $objItem.SMBIOSMemoryType     ;SMBIOS内存类型
                        $aMemoryInfo[$i][30]        = $objItem.Speed                ;速率
                        $aMemoryInfo[$i][31]        = $objItem.Status               ;状态
                        $aMemoryInfo[$i][32]        = $objItem.Tag                  ;标签
                        $aMemoryInfo[$i][33]        = $objItem.TotalWidth           ;总宽度(位)
                        $aMemoryInfo[$i][34]        = $objItem.TypeDetail           ;类型详细信息
                        $aMemoryInfo[$i][35]        = $objItem.Version              ;版本信息
                        $i += 1
                Next
                $aMemoryInfo[0][0] = UBound($aMemoryInfo) - 1                   ;内存条数量
                If $aMemoryInfo[0][0] < 1 Then
                        Return SetError(1, 1, 0)
                EndIf
        Else
                Return SetError(1, 2, 0)
        EndIf
        Return SetError(0, 0, $aMemoryInfo)
EndFunc ;_ComputerGetMemory
应该是可操作系统有关,win7有些属性没有,没有窗口弹出来应该是有报错的,我在虚拟机里试了下,需要注释掉这些属性,如果还是没有窗口弹出来,可以看看控制台的错误提示,也可以把控制台的数据贴上来
 楼主| 发表于 2021-10-26 21:20:29 | 显示全部楼层
sh1536 发表于 2021-10-26 21:10
你电脑是win7吧,我是在win10上测试的,刚在虚拟机里试了确实是有问题的,再改一下

对的,我的是win7,不是win10,改哪里可以在win7正常运行
 楼主| 发表于 2021-10-26 21:24:40 | 显示全部楼层
sh1536 发表于 2021-10-26 21:18
应该是可操作系统有关,win7有些属性没有,没有窗口弹出来应该是有报错的,我在虚拟机里试了下,需要注释 ...

厉害,出来了
 楼主| 发表于 2021-10-26 21:27:25 | 显示全部楼层
sh1536 发表于 2021-10-26 21:18
应该是可操作系统有关,win7有些属性没有,没有窗口弹出来应该是有报错的,我在虚拟机里试了下,需要注释 ...

我是做了一个小软件,内存只是显示出来了多大,我是想完善一下,能显示内存的频率和内存的品牌还有内存是几代
 楼主| 发表于 2021-10-26 21:29:05 | 显示全部楼层
sh1536 发表于 2021-10-26 21:18
应该是可操作系统有关,win7有些属性没有,没有窗口弹出来应该是有报错的,我在虚拟机里试了下,需要注释 ...


是这样的,做了一个小软件,只能显示容量,剩下的都不能显示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2021-10-26 21:31:58 | 显示全部楼层
内存的品牌可以直接显示英文,如果想显示中文,就得去网上搜集一下英文对应的中文
第几代判断一下速率可以得出,一般速率越高的代数越高,这个也得网上找下代数对应的速率,不知道有什么方法可以直接获得代数,目前只想到这个曲线救国的方法
 楼主| 发表于 2021-10-26 21:33:52 | 显示全部楼层
sh1536 发表于 2021-10-26 21:31
内存的品牌可以直接显示英文,如果想显示中文,就得去网上搜集一下英文对应的中文
第几代判断一下速率可以 ...

一样还是非常感谢了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 21:26 , Processed in 0.068090 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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