Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inno setup 在Inno设置中查询可用RAM_Inno Setup_Pascalscript - Fatal编程技术网

Inno setup 在Inno设置中查询可用RAM

Inno setup 在Inno设置中查询可用RAM,inno-setup,pascalscript,Inno Setup,Pascalscript,我需要获得可用的RAM来确定我的软件的一些特性 我有以下代码显示我电脑的RAM: 类型 DWORDLONG=Int64; TMemoryStatusEx=记录 dwLength:DWORD; 德沃德:德沃德; 乌尔多尔菲斯:德沃德隆; ullavalphys:DWORDLONG; ulltottalpagefile:DWORDLONG; ullAvailPageFile:DWORDLONG; ullTotalVirtual:DWORDLONG; ullAvailVirtual:DWORDLONG

我需要获得可用的RAM来确定我的软件的一些特性

我有以下代码显示我电脑的RAM:

类型
DWORDLONG=Int64;
TMemoryStatusEx=记录
dwLength:DWORD;
德沃德:德沃德;
乌尔多尔菲斯:德沃德隆;
ullavalphys:DWORDLONG;
ulltottalpagefile:DWORDLONG;
ullAvailPageFile:DWORDLONG;
ullTotalVirtual:DWORDLONG;
ullAvailVirtual:DWORDLONG;
ullavailxendedvirtual:DWORDLONG;
结束;
函数GlobalMemoryStatusEx(var lpBuffer:TMemoryStatusEx):BOOL;
外部的GlobalMemoryStatusEx@kernel32.dllstdcall';
函数初始化设置:布尔;
变量
MemoryStatus:TMemoryStatusEx;
RAM:字符串;
开始
结果:=真;
MemoryStatus.dwLength:=SizeOf(MemoryStatus);
如果是GlobalMemoryStatus(MemoryStatus),则
开始
RAM:=Int64ToStr(MemoryStatus.ullTotalPhys/100000000);
MsgBox('这台电脑有'+RAM+'GB的RAM',MB信息,MB_正常);
结束;
结束;

基于

读取
ullavalphys
字段:

类型
DWORDLONG=Int64;
TMemoryStatusEx=记录
dwLength:DWORD;
德沃德:德沃德;
乌尔多尔菲斯:德沃德隆;
ullavalphys:DWORDLONG;
ulltottalpagefile:DWORDLONG;
ullAvailPageFile:DWORDLONG;
ullTotalVirtual:DWORDLONG;
ullAvailVirtual:DWORDLONG;
ullavailxendedvirtual:DWORDLONG;
结束;
函数GlobalMemoryStatusEx(var lpBuffer:TMemoryStatusEx):BOOL;
外部的GlobalMemoryStatusEx@kernel32.dllstdcall';
函数初始化设置:布尔;
变量
MemoryStatus:TMemoryStatusEx;
RAM,可用:字符串;
开始
结果:=真;
MemoryStatus.dwLength:=SizeOf(MemoryStatus);
{如果GlobalMemoryStatusEx函数调用成功,则…}
如果是GlobalMemoryStatus(MemoryStatus),则
开始
RAM:=Int64ToStr(MemoryStatus.ullTotalPhys/100000000);
可用:=Int64ToStr(MemoryStatus.ullAvailPhys/100000000)
MsgBox('这台电脑有'+RAM+'GB内存,可用'+Available,MB信息,MB_OK);
结束;
结束;

读取
ullavalphys
字段:

类型
DWORDLONG=Int64;
TMemoryStatusEx=记录
dwLength:DWORD;
德沃德:德沃德;
乌尔多尔菲斯:德沃德隆;
ullavalphys:DWORDLONG;
ulltottalpagefile:DWORDLONG;
ullAvailPageFile:DWORDLONG;
ullTotalVirtual:DWORDLONG;
ullAvailVirtual:DWORDLONG;
ullavailxendedvirtual:DWORDLONG;
结束;
函数GlobalMemoryStatusEx(var lpBuffer:TMemoryStatusEx):BOOL;
外部的GlobalMemoryStatusEx@kernel32.dllstdcall';
函数初始化设置:布尔;
变量
MemoryStatus:TMemoryStatusEx;
RAM,可用:字符串;
开始
结果:=真;
MemoryStatus.dwLength:=SizeOf(MemoryStatus);
{如果GlobalMemoryStatusEx函数调用成功,则…}
如果是GlobalMemoryStatus(MemoryStatus),则
开始
RAM:=Int64ToStr(MemoryStatus.ullTotalPhys/100000000);
可用:=Int64ToStr(MemoryStatus.ullAvailPhys/100000000)
MsgBox('这台电脑有'+RAM+'GB内存,可用'+Available,MB信息,MB_OK);
结束;
结束;

如果您已经从中获得了
GlobalMemoryStatusEx
的代码,只需使用
ullAvailPhys
字段即可


另一种可能性是使用:

var
查询:字符串;
WbemLocator、WbemServices、WBEMObject集:变量;
操作系统:变体;
开始
WbemLocator:=CreateOleObject('WbemScripting.SWbemLocator');
WbemServices:=WbemLocator.ConnectServer('.','root\CIMV2');
查询:=“从Win32_OperatingSystem中选择FreePhysicalMemory”;
WbemObjectSet:=WbemServices.ExecQuery(查询);
如果不是VarisAll(WbemObjectSet)和(WbemObjectSet.Count>0),则
开始
OperatingSystem:=WbemObjectSet.ItemIndex(0);
日志(格式('可用物理内存=%d GB'[
整数(OperatingSystem.FreePhysicalMemory div(1024*1024)));
结束;
结束;

另请参见(显示如何使用WMI查询检索总物理内存)。

如果您已经拥有来自的
GlobalMemoryStatusEx
的代码,只需使用
ullavalphys
字段即可


另一种可能性是使用:

var
查询:字符串;
WbemLocator、WbemServices、WBEMObject集:变量;
操作系统:变体;
开始
WbemLocator:=CreateOleObject('WbemScripting.SWbemLocator');
WbemServices:=WbemLocator.ConnectServer('.','root\CIMV2');
查询:=“从Win32_OperatingSystem中选择FreePhysicalMemory”;
WbemObjectSet:=WbemServices.ExecQuery(查询);
如果不是VarisAll(WbemObjectSet)和(WbemObjectSet.Count>0),则
开始
OperatingSystem:=WbemObjectSet.ItemIndex(0);
日志(格式('可用物理内存=%d GB'[
整数(OperatingSystem.FreePhysicalMemory div(1024*1024)));
结束;
结束;

另请参见(显示了如何使用WMI查询检索总物理内存)。

如果很明显,那么为什么要问?我对编程不熟悉,我对本页不熟悉,我几乎不懂Pascalscript,我的语言不是英语,所以即使在这里问也很难,当我问问题时,我没有看到答案,如果这让你感到困扰,我很抱歉。如果这很明显,那为什么要问?我是编程新手,我不熟悉这一页,我几乎不懂Pascalscript,我的语言不是英语,所以在这里问问题对我来说都很难,当我问问题时,我没有看到答案,所以如果这让你感到困扰,我很抱歉。谢谢,这将对我有很大帮助。我发现在某些电脑上使用WMI测试可用内存是一项非常缓慢且资源密集型的任务。谢谢,这将对我有很大帮助。我发现在某些电脑上使用WMI测试可用内存是一项非常缓慢且资源密集型的任务。