15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Получение информации о железе.

Приведённый пример использует функцию GetSystemInfo и позволяет узнать OEM идентификатор, тип процессора, размер страницы и т.д. Пример является консольным приложением.

 

#include <windows.h>
#include <stdio.h>

void main()
{
   SYSTEM_INFO siSysInfo;

   // Копируем информацию о железе в структуру SYSTEM_INFO.

   GetSystemInfo(&siSysInfo);

   // Отображаем содержимое структуры SYSTEM_INFO.

   printf("Hardware information: \n");
   printf("  OEM ID: %u\n", siSysInfo.dwOemId);
   printf("  Number of processors: %u\n",
      siSysInfo.dwNumberOfProcessors);
   printf("  Page size: %u\n", siSysInfo.dwPageSize);
   printf("  Processor type: %u\n", siSysInfo.dwProcessorType);
   printf("  Minimum application address: %lx\n",
      siSysInfo.lpMinimumApplicationAddress);
   printf("  Maximum application address: %lx\n",
      siSysInfo.lpMaximumApplicationAddress);
   printf("  Active processor mask: %u\n",
      siSysInfo.dwActiveProcessorMask);
}

В следующем примере используется функция GetSystemMetrics чтобы определить, установлена ли мышка и не поменялось ли функциональное назначение её кнопок. В примере также используется функция SystemParametersInfo для определения чувствительности мышки и её границ.

#include <windows.h>
#include <stdio.h>

void main()
{
   BOOL fResult;
   int aMouseInfo[3];

   fResult = GetSystemMetrics(SM_MOUSEPRESENT);

   if (fResult == 0)
      printf("No mouse installed.\n");
   else
   {
      printf("Mouse installed.\n");

      // Определяем, не поменялись ли кнопки мышки.

      fResult = GetSystemMetrics(SM_SWAPBUTTON);

      if (fResult == 0)
         printf("Buttons not swapped.\n");
      else printf("Buttons swapped.\n");

      // Получаем чувствительность мышки и её границы.

      fResult = SystemParametersInfo(
         SPI_GETMOUSE,  // получить информацию о мышке
         NULL,          // не используется
         &aMouseInfo,   // сюда поместить информацию
         NULL);         // не используется

      if( fResult )
      {
         printf("Speed: %d\n", aMouseInfo[2]);
         printf("Threshold (x,y): %d,%d\n",
            aMouseInfo[0], aMouseInfo[1]);
      }
   }
}

В следующем примере используется функция SystemParametersInfo для того, чтобы увеличить скорость мышки вдвое.

#include <windows.h>
#include <stdio.h>

void main()
{
   BOOL fResult;
   int aMouseInfo[3];       // массив для хранения информации

   // Получаем текущую чувствительность мышки.

   fResult = SystemParametersInfo(
      SPI_GETMOUSE,   // получаем информацию о мышке
      NULL,           // не используется
      &aMouseInfo,    // сюда поместить информацию
      NULL);          // не используется

   // Умножаем на 2.
 
   if( fResult )
   {
      aMouseInfo[2] = 2 * aMouseInfo[2];

      // Меняем чувствительность мышки.

      SystemParametersInfo(
         SPI_SETMOUSE,      // изменяем информацию мышки
         NULL,              // не используется
         aMouseInfo,        // массив с информацией
         SPIF_SENDCHANGE);  // обновить win.ini
   }
}