Einzelnen Beitrag anzeigen

Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Anzahl der CPU (Nicht Kerne/Cores) bestimmen

  Alt 14. Jun 2013, 14:16
Also bei mir liefert die Win32_ComputerSystem Klasse den richtigen Wert.

Delphi-Quellcode:
//uses ...ActiveX, ComObj, Variants, windows;
procedure CPU2;
const
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject : Variant;// OLEVariant;
  oEnum : IEnumvariant;
  iValue : PULONG;//LongWord;
begin;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\cimv2', '', '');
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_ComputerSystem','WQL',wbemFlagForwardOnly);
  oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
   Form1.Memo1.lines.add(Format(' NumberOfLogicalProcessors : %d', [Integer(FWbemObject.NumberOfLogicalProcessors)]));
   Form1.Memo1.lines.add(Format(' NumberOfProcessors : %d', [Integer(FWbemObject.NumberOfProcessors)]));
   FWbemObject:=Unassigned;
  end;
end;
Win32_ComputerSystem:
Code:
 NumberOfLogicalProcessors : 2
 NumberOfProcessors : 1 <--
Win32_Processor:
Code:
 NumberOfCores : 2
 NumberOfLogicalProcessors : 2
Die Abfrage mit Win32_ComputerSystem kommt mir auch weniger verzögert vor.

Geändert von Ginko (14. Jun 2013 um 14:29 Uhr)
  Mit Zitat antworten Zitat