И сразу я предупреждаю вас, что я только учусь и не являюсь "профессионалом" этого языка (C Sharp) (как и платформы). Я лишь хочу рассказать вам, как я разработал свою библиотеку для работы с данными о пк (железо, проц, озу, биос, ОС и тд.), а также программу для работы с данными о системе на основе разработанной библиотеке попутно объясняя это тем, кто только что заехал в .NET . Также я не собираюсь пользоваться наивными методами по типу System.Diagnostics.* НЕТ, будем писать свою библиотеку с нуля ! Да, не самую быструю, не самую многофункциональную, но свою функцию она выполнять БУДЕТ и на основе её можно будет спокойно и без лишних телодвижений сделать простенькую программу - монитор ресурсов и данных о вашем ПК.
Значит, есть у нас пространство имён System.Management, а в нем нужный нам класс ManagementObjectSearcher, на котором строится половина моего "гайда". Если вам интересно, что это такое то посмотрите про это тут, это ссылка на подробное описание этого чуда. Ну а я человек простой, я объясню вам в пару слов (как я это понял), чо это такое и зачем это нужно.
И так, класс ManagementObjectSearcher. Грубо говоря мы "суём ему инструкции WMI класса и работаем с ними".
Например :
public static UInt32 GetCpuCurrentClockSpeed()
{
ManagementObjectSearcher s = new ManagementObjectSearcher("SELECT * FROM Win32_processor");
ManagementObject management = s.Get().OfType<ManagementObject>().First();
return Convert.ToUInt32(management[CurrentClockSpeed]);
}
В этом примере мы получаем из класса Win32_Processor текущую тактовую частоту нашего процессора (Метод CurrentClockSpeed).
Подробнее про Win32_processor тут. В этом классе (как и в других подобных, их много на сайте Microsoft) достаточно много методов для работы с данными о процессоре.
Подобных и очень полезных классов много:
- Win32_Battery (для работы с батареей)
- Win32_BIOS (для работы с биосом)
- Win32_Keyboard (для работы с клавиатурой)
- Win32_NetworkAdapter (для работы с сетевым адаптером)
- Win32_Printer (для работы с принтером)
- Win32_Processor (для работы с процессором)
Это всё аппаратные классы, но есть и другие : классы ОС, счётчиков производительности и др. Их достаточно много ! На основе этих классов ним не составит труда разработать библиотеку и програму для работы с данными о ПК.
Отлично. Теперь мы знаем откуда и куда идти, перейдём к написанию библиотеки.
Теперь создадим первый класс (CPU_Data) :
Для удобства я создал пространство имён FastPC_Data.Commands, где отдельно для каждого класса будут лежать константы с командами:
Дальше я выписал необходимые нам команды (класса CPU_Data).
Это все команды для WMI класса Win32_Processor.
Теперь будем писать сам класс CPU_Data.
Теперь по такому же принципу делаем это для всех остальных методов этого класса.
Готово. Теперь у нас есть простенький класс для работы с данными о процессоре. Среди них есть много полезных, таких как : напряжение на процессоре, тактовая частота, статус включения виртуализации, размер и скорость кеша L2 и L3, время установки процессора, разрядность, имя, род и др.
По такому же принципу делаем остальные классы.
Следующим я решил сделать класс для получения информации о видеоконтроллере. Класс Win32_VideoController нам поможет в этом.
Теперь мы можем получать информацию о нашем видео адаптере !
По такому же принципу можно написать и другие классы. Например Win32_NetworkAdapter, Win32_Printer и много других...
Но нам для получения данных о ПК достаточно и этого.
Теперь давайте напишем небольшую программу для демонстрации нашей библиотеки. Я напишу консольное приложение, которое будет выводить общие данные о компьютере в консоль.
Теперь подключим нашу библиотеку к этому демонстрационному проекту.
P.s. Я знаю, что можно было проще (подключить существующий проект с библиотекой и подсосаться через ссылки к нашей библиотеке).
Теперь приступим к моему примеру использования этой библиотеки :
Результат : если вы новичок в .NET, то это может быть отличным примером по разработке своей библиотеки для поучения характеристик о ПК. Как я и сказал этих классов достаточно много и можно писать и писать эту библиотеку, расширяя её функционал, но я хотел всего лишь продемонстрировать пример работы с WMI классами, где вы можете найти практически все необходимые для вас классы и методы.
Скоро я выпущу пост, где напишу уже готовую программу для "мониторинга" характеристик и информации о ПК, поэтому подписывайтесь на меня, Я ОБЕЩАЮ ВЫКЛАДЫВАТЬ ПОЛЕЗНЫЕ ПОСТЫ ДЛЯ НОВИЧКОВ В ПРОГРАММИРОВАНИИ на C Sharp и C++, а также я буду периодически выкладывать публикации с уроками по Arduino.
Готовую библиотеку и код вы можете скачать здесь. (Я буду периодически обновлять и допиливать эту библиотеку)
Всем удачи !