|
|
|
#1
|
|||
|
|||
|
Quote:
Code:
function GetSysCores(): Integer;
var
WbemLocator, WbemServices, WbemObjectSet, WbemObject: Variant;
begin;
WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
WbemServices := WbemLocator.ConnectServer('localhost', 'root\CIMV2');
WbemObjectSet := WbemServices.ExecQuery('Select NumberOfCores from Win32_Processor');
WbemObject := WbemObjectSet.ItemIndex(0);
Result := WbemObject.Properties_.Item('NumberOfCores').Value;
WbemLocator:=Unassigned;
WbemServices:=Unassigned;
WbemObjectSet:=Unassigned;
WbemObject:=Unassigned;
end;
function GetSysThreads(): Integer;
var
WbemLocator, WbemServices, WbemObjectSet, WbemObject: Variant;
begin;
WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
WbemServices := WbemLocator.ConnectServer('localhost', 'root\CIMV2');
WbemObjectSet := WbemServices.ExecQuery('Select NumberOfLogicalProcessors from Win32_Processor');
WbemObject := WbemObjectSet.ItemIndex(0);
Result := WbemObject.Properties_.Item('NumberOfLogicalProcessors').Value;
WbemLocator:=Unassigned;
WbemServices:=Unassigned;
WbemObjectSet:=Unassigned;
WbemObject:=Unassigned;
end;
|
| The Following User Says Thank You to DiCaPrIo For This Useful Post: | ||
Masquerade (18-08-2021) | ||
| Sponsored Links |
|
#2
|
|||
|
|||
|
DiCaPrIo
So I would put if GetSysCores = 6 in the if loop after calling the function? |
|
#3
|
|||
|
|||
|
Quote:
Code:
procedure InitializeWizard(); var Cores,Threads:Integer; begin Cores:=GetSysCores; Threads:=GetSysThreads; if Cores = 6 then begin //yourcode end; if Threads = 6 then begin //yourcode end; end; |
| The Following User Says Thank You to DiCaPrIo For This Useful Post: | ||
Masquerade (18-08-2021) | ||
|
#4
|
||||
|
||||
|
Quote:
if GetSysCores = 6 then begin end; The function can also be simplified using variables of type variant so you can get any supported value just by changing the string you want to search for. Code:
function GetSysInfo(const WMIClass, WMIProperty: String): Variant;
var
WbemLocator, WbemServices, WbemObjectSet, WbemObject: Variant;
begin;
WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
WbemServices := WbemLocator.ConnectServer('localhost', 'root\CIMV2');
WbemObjectSet := WbemServices.ExecQuery('Select ' + WMIProperty + ' from ' + WMIClass);
if (not VarIsNull(WbemObjectSet)) and (WbemObjectSet.Count > 0) then begin
WbemObject := WbemObjectSet.ItemIndex(0);
if not VarIsNull(WbemObject) then
Result := WbemObject.Properties_.Item(WMIProperty).Value;
end;
end;
procedure GetFreeMemory(var Free, Total: Extended);
begin
Total := GetSysInfo('Win32_OperatingSystem', 'TotalVisibleMemorySize');
Free := GetSysInfo('Win32_OperatingSystem ', 'FreePhysicalMemory');
end;
function CPUCores: Integer;
begin
Result := GetSysInfo('Win32_Processor', 'NumberOfCores');
end;
function CPUThreads: Integer;
begin
Result := GetSysInfo('Win32_Processor', 'NumberOfLogicalProcessors');
end;
You can also use the API if you prefer to get Threads. Code:
type
TSystemInfo = record
wProcessorArchitecture: Word;
wReserved: Word;
dwPageSize: DWORD;
lpMinimumApplicationAddress: Integer;
lpMaximumApplicationAddress: Integer;
dwActiveProcessorMask: DWORD;
dwNumberOfProcessors: DWORD;
dwProcessorType: DWORD;
dwAllocationGranularity: DWORD;
wProcessorLevel: Integer;
wProcessorRevision: Word;
end;
procedure GetSystemInfo(var lpSystemInfo: TSystemInfo);
external '[email protected] stdcall delayload';
function GetCPUThreads: Integer;
var
SysInfo: TSystemInfo;
begin
GetSystemInfo(SysInfo);
Result := SysInfo.dwNumberOfProcessors;
end;
|
| The Following 3 Users Say Thank You to Cesar82 For This Useful Post: | ||
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| INNO TROUBLESHOOT - Tutorials and Answers about INNO Setup | REV0 | Conversion Tutorials | 129 | 21-05-2021 05:51 |
| INNO TUTORIAL - Using Unicode and ANSI Versions of INNO Setup | REV0 | Conversion Tutorials | 51 | 26-03-2015 06:57 |
| Frequently Asked Questions | Joe Forster/STA | PC Games - Frequently Asked Questions | 0 | 29-11-2005 09:48 |