Получение количества процессоров в Windows с помощью realbasic

#windows #wmi #realbasic

#Windows #wmi #realbasic

Вопрос:

Я пытался использовать WMI, но пока безуспешно.

 Dim objLocator As New OLEObject("WbemScripting.SWbemLocator")
Dim objService As OLEObject
objService = objLocator.ConnectServer(".", "rootcimv2")
Dim instances As OLEObject
instances = objService.InstancesOf("Win32_ComputerSystem")
  

Все, что я пытаюсь сделать дальше, вызывает исключение OLE. Существует ли какой-либо другой известный способ программного получения количества процессоров из REALbasic. Я знаю, что мог бы выполнить vbscript из класса shell, но для меня это слишком некрасиво.

Ответ №1:

Вы можете вызвать функцию GetSystemInfo и использовать dwNumberOfProcessors, входящую в структуру SYSTEM_INFO.

Взгляните на следующий пример кода:

   Declare Sub GetSystemInfo Lib "kernel32" Alias "GetSystemInfo" (lpSystemInfo As Ptr)

  Dim SystemInfo as MemoryBlock=new MemoryBlock(36)
  GetSystemInfo(SystemInfo)
  Dim ProcessorCount as Integer=SystemInfo.Long(20)
  

Структура SYSTEM_INFO имеет размер 36 байт. Элементы перед dwNumberOfProcessors имеют размер 20 байт.