Аппаратная характеристика ПК

 














КУРСОВАЯ РАБОТА

ПО ДИСЦИПЛИНЕ: Системное программирование

Аппаратная характеристика ПК

РЕФЕРАТ


Курсовая работа: 55 страницы, 8 рисунков, 4 приложения, 5 источников литературы.

Объект исследования: Delphi, Windows API, Реестр.

Цель работы: Написать Windows - приложение, которое будет выводить аппаратную характеристику ПК на экран.

Описание работы: исследование средств для создания вышеназванной программы. В курсовой работе проводится анализ работы с регистрами и WinApi функций.

Основные задачи: программно узнать аппаратную характеристику компьютера.



Оглавление

реестр windows приложение

Введение

Раздел 1. Реестр Windows. WinApi функции

Реестр Windowsфункции

Аналоги программ других разработчиков

Раздел 2. Среда и языки разработки

Среда разработки Delphi

Язык программирования Delphi

Раздел 3

Руководство программиста

Руководство пользователя

Выводы

Литература

Приложения


Введение


Аппаратная характеристика ПК. Такая тема курсовой работы. Большинство пользователей уже давно не вызывают ремонтные службы для мелкого ремонта и настройки персонального компьютера. Однако не каждый из них знает, как правильно настроить компьютер и найти правильное дополнительное программное обеспечение. Именно для таких случаев создана данная программа.

Программа предназначена для удобного поиска основного программного обеспечения, для последующей правильной настройки пользователем компьютера.

Главной задачей этой программы является упрощение настройки ПК и загрузку правильно подобранного программного обеспечения ПК. С помощью этой программы можно легко узнать какая на вашем ПК установлена видеокарта, процессор и т.д.



РАЗДЕЛ 1. Реестр Windows. WinApi функции


В данном разделе приводится определение и общая информация о реестрах Windows и основных функциях Windows API.


Реестр Windows


Реестр Windows или системный реестр - иерархически построенная база данных параметров и настроек в большинстве операционных систем Microsoft Windows. Реестр содержит информацию и настройки для аппаратного обеспечения, программного обеспечения, профилей пользователей, предустановки. Большинство изменений в Панели управления, ассоциации файлов, системные политики, список установленного ПО фиксируются в реестре. Реестр Windows был введён для упорядочения информации, хранившейся до этого во множестве INI-файлов, обеспечения единого механизма (API) записи-чтения настроек и избавления от проблем коротких имён, отсутствия разграничения прав доступа и медленного доступа к ini-файлам, хранящимся на файловой системе |FAT16, имевшей серьёзные проблемы быстродействия при поиске файлов в директориях с большим их количеством. Со временем (окончательно - с появлением NTFS) проблемы, решавшиеся реестром, исчезли, но реестр остался из-за обратной совместимости, и присутствует во всех версиях Windows включая последнюю. Поскольку сейчас не существует реальных предпосылок для использования подобного механизма, Microsoft Windows - единственная (не считая ReactOS) операционная система из используемых сегодня, в которой используется механизм реестра операционной системы.

История возникновения и развития реестра

Реестр Windows 3.1

Сам реестр, как древовидная иерархическая база данных впервые появился в Windows 3.1 (апрель 1992). Это был всего один двоичный файл, который назывался REG.DAT и хранился в каталоге C:\Windows\. Реестр Windows 3.1 имел только одну ветку HKEY_CLASSES_ROOT. Он служил для связи DDE, а позднее и OLE объектов. Одновременно c появлением реестра в Windows 3.1 появилась программа REGEDIT.EXE для просмотра и редактирования реестра. Первый реестр уже имел возможность импорта данных из *.REG файлов. В базовой поставке шёл файл SETUP.REG, содержащий данные по основным расширениям и типам файлов. Реестр Windows 3.1 имел ограничение на максимальный размер файла REG.DAT - 64 Кбайт. Если вдруг реестр превышал этот размер - то файл реестра (REG.DAT) приходилось удалять и собирать заново либо из *.REG файлов, либо вводить данные вручную.

Реестр Windows NT 3.1

Следующий шаг сделан в Windows NT 3.1 (июль 1993). Произошёл отказ от устаревших файлов MS-DOS: AUTOEXEC.BAT и CONFIG.SYS, а также от INI-файлов, как от основных файлов конфигурации. На «регистрационную базу» (реестр) была переведена вся конфигурация системы. Основой конфигурации системы стал реестр. Он имел 4 корневых раздела: HKEY_ LOCAL_MACHINE, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT и HKEY_USERS. Реестр стал «сборным»: на диске он хранился в файлах: DEFAULT, SOFTWARE, SYSTEM, а при запуске системы из этих файлов собиралась единая БД. В комплекте поставки оставался файл REGEDIT.EXE, который по-прежнему позволял просматривать и редактировать только ветку HKEY_CLASSES_ROOT, и появился файл REGEDT32.EXE, который позволял редактировать все ветки реестра. Далее технология и идеология (назначение) реестра уже не менялись. Все последующие версии Windows (NT 3.5, 95, NT 4.0, 98, 2000, XP, Vista, 7) использовали реестр как основную БД, содержащую все основные данные по конфигурации как самой ОС, так и прикладных программ. Далее менялись названия файлов реестра и их расположение, а также название и назначение ключей.

Современный реестр Windows

Реестр в том виде, как его использует Windows и как видит его пользователь в процессе использования программ работы с реестром, формируется из различных данных. Чтобы получилось то, что видит пользователь, редактируя реестр, происходит следующее. Вначале, в процессе установки и настройки Windows, на диске формируются файлы, в которых хранится часть данных относительно конфигурации системы. Затем, в процессе каждой загрузки системы, а также в процессе каждого входа и выхода каждого из пользователей, формируется некая виртуальная сущность, называемая «реестром» - объект REGISTRY\. Данные для формирования «реестра» частично берутся из тех самых файлов (Software, System …), частично из информации, собранной ntdetect при загрузке (HKLM\Hardware\Description). То есть часть данных реестра хранится в файлах, а часть данных формируется в процессе загрузки Windows. Для редактирования, просмотра и изучения реестра стандартными средствами Windows (программы regedit.exe и regedt32.exe) доступны именно ветки реестра. После редактирования реестра и/или внесения в него изменений эти изменения сразу записываются в файлы. Однако, есть программы сторонних разработчиков, которые позволяют работать непосредственно с файлами. Программы оптимизации реестра, твикеры, а также инсталляторы и деинсталляторы программ работают через специальные функции работы с реестром.

Описание разделов реестра_CURRENT_USER

Данный раздел содержит настройки текущего активного пользователя, вошедшего в систему. Здесь хранятся папки пользователя, цвета экрана и параметры панели управления. Эти сведения сопоставлены с профилем пользователя. Вместо полного имени раздела иногда используется аббревиатура HKCU. Хотя этот раздел выглядит как один из основных в редакторе реестра, он является всего лишь ссылкой на один из профилей HKEY_USERS\._USERS

Раздел HKEY_USERS (псевдоним HKU) содержит информацию о профилях всех пользователей данного компьютера. Данный раздел практически никогда не используется пользователями. Следует отметить связь данного корневого раздела с разделом HKEY_CURRENT_USER, который фактически является ссылкой подраздела корневого раздела HKEY_USERS, хранящего сведения о текущем пользователе._LOCAL_MACHINE

Раздел содержит параметры конфигурации, относящиеся к данному компьютеру (для всех пользователей). Вместо полного имени раздела иногда используется аббревиатура HKLM._CLASSES_ROOT

Является подразделом HKEY_LOCAL_MACHINE\Software\Classes. В основном, содержит информацию о зарегистрированных типах файлов и объектах COM и ActiveX. Вместо полного имени раздела иногда используется аббревиатура HKCR. Начиная с Windows 2000, эти сведения хранятся как в HKEY_LOCAL_MACHINE, так и в HKEY_CURRENT_USER.

Раздел HKEY_LOCAL_MACHINE\Software\Classes содержит параметры по умолчанию, которые относятся ко всем пользователям локального компьютера. Параметры, содержащиеся в разделе HKEY_CURRENT_USER\Software\Classes, переопределяют принятые по умолчанию и относятся только к текущему пользователю. Раздел HKEY_CLASSES_ROOT включает в себя данные из обоих источников. Кроме того, раздел HKEY_CLASSES_ROOT предоставляет объединённые данные программам, написанным под ранние версии Windows. Изменения настроек текущего пользователя выполняются в разделе HKEY_CURRENT_USER\Software\Classes. Модификация параметров по умолчанию должна производиться в разделе HKEY_LOCAL_MACHINE\Software\Classes. Данные из разделов, добавленных в HKEY_CLASSES_ROOT, будут сохранены системой в разделе HKEY_LOCAL_MACHINE\Software\Classes. Если изменяется параметр в одном из подразделов раздела HKEY_CLASSES_ROOT и такой подраздел уже существует в HKEY_CURRENT_USER\Software\Classes, то для хранения информации будет использован раздел HKEY_CURRENT_USER\Software\Classes, а не HKEY_LOCAL_MACHINE\Software\Classes._CURRENT_CONFIG

Данный раздел содержит сведения о профиле оборудования, используемом локальным компьютером при запуске системы является сылкой на HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\HardwareProfiles\Current_DYN_DATA

Данный раздел имеется только в реестре ОС семейства Windows 9x/ME. Содержит динамически изменяемые данные о компьютере (загрузка процессора, размер файла подкачки и т. п.).

функции

API - общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Microsoft Windows корпорации «Майкрософт» и совместимой с ними свободной бесплатной операционной системы ReactOS. Является самым прямым способом взаимодействия приложений с Windows и ReactOS. Для создания программ, использующих Windows API, «Майкрософт» выпускает комплект разработчика программного обеспечения, который называется Platform SDK, и содержит документацию, набор библиотек, утилит и других инструментальных средств для разработки.API был изначально спроектирован для использования в программах, написанных на языке Си или C++. Работа через Windows API - это наиболее близкий к системе способ взаимодействия с ней из прикладных программ. Более низкий уровень доступа, необходимый только для драйверов устройств, в текущих версиях Windows предоставляется через Windows Driver Model.

Версии- первая версия Windows API для 16-разрядных версий Windows. Изначально назывался просто Windows API, затем стал называться Win16 для отличия от Win32.s - подмножество Win32, устанавливаемое на семейство 16-разрядных систем Windows 3.x, и реализующее ограниченный набор функций Win32 API для этих систем.

Win32 - 32-разрядный API для современных версий Windows. Самая популярная ныне версия. Базовые функции этого API реализованы в динамически подключаемых библиотеках <http://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D0%B5%D0%BC%D0%B0%D1%8F_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0> kernel32.dll и advapi32.dll; базовые модули графического интерфейса пользователя <http://ru.wikipedia.org/wiki/%D0%93%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F> - в user32.dll и gdi32.dll. Win32 появился вместе с Windows NT <http://ru.wikipedia.org/wiki/Windows_NT> и затем был перенесён в несколько ограниченном виде в системы серии Windows 9x <http://ru.wikipedia.org/wiki/Windows_9x>. В современных версиях Windows, происходящих от Windows NT, работу Win32 GUIобеспечивают два модуля: csrss.exe (процесс исполнения клиент-сервер <http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80>), работающий в пользовательском режиме <http://ru.wikipedia.org/w/index.php?title=%D0%A0%D0%B5%D0%B6%D0%B8%D0%BC_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F&action=edit&redlink=1>, и win32k.sys в режиме ядра <http://ru.wikipedia.org/w/index.php?title=%D0%A0%D0%B5%D0%B6%D0%B8%D0%BC_%D1%8F%D0%B4%D1%80%D0%B0&action=edit&redlink=1>. Работу же системных Win32 API обеспечивает ядро <http://ru.wikipedia.org/w/index.php?title=%D0%AF%D0%B4%D1%80%D0%BE_Windows&action=edit&redlink=1> - ntoskrnl.exe.- 64-разрядная версия Win32, содержащая дополнительные функции для использования на 64-разрядных компьютерах. Win64 API можно найти только в 64-разрядных версиях Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows Server 2008 R2, Windows 7 и Windows 8.

Алфавитный список технологий, доступных через Windows API:

Система контроля и управления доступом.

Microsoft Active Accessibility.Directory.Server Pages..

Автоматизация.

Фоновая интеллектуальная служба передачи (BITS).

Bluetooth..Enrollment Control.Services.Data Objects.File Protection

И так далее.


Аналоги программ других разработчиков

- программа для просмотра информации об аппаратной и программной конфигурации компьютера, разработанная компанией Lavalys. Являлась последовательницей AIDA32, заменена на рынке программой AIDA64.

Рис.1.1 Общий вид программы «EVEREST»


Программа анализирует конфигурацию компьютера и выдаёт

подробную информацию:

об установленных в системе устройствах - процессорах, системных платах, видеокартах, аудиокартах, модулях памяти и т. д.

их характеристиках: тактовая частота, напряжение питания, размер кэшей, и т. д.

поддерживаемых ими наборах команд и режимах работы

их производителях

установленном программном обеспечении

конфигурации операционной системы

установленных драйверах

автоматически загружаемых программах

запущенных процессах

имеющихся лицензиях

Тестирование производительности ПК:

чтение из памяти - тестирует скорость пересылки данных из ОЗУ к процессору.

запись в память - тестирует скорость пересылки данных из процессора к ОЗУ, копирование в памяти - тестирует скорость пересылки данных из одних ячеек памяти в другие через кэш процессора.

задержка памяти - тестирует среднее время считывания процессором данных из ОЗУ.Queen - тестирует производительность процессора в целочисленных операциях при решении классической «Задачи с ферзями».PhotoWorxx - тестирует производительность блоков целочисленных арифметических операций, умножения, а также подсистемы памяти при выполнении ряда стандартных операций с RGB-изображениями.ZLib - тестирует производительность процессора и подсистемы памяти при создании архивов формата ZIP при помощи популярной открытой библиотеки ZLib. Использует целочисленные операции.AES - тестирует скорость процессора при выполнении шифрования по криптоалгоритму AES. Способен использовать низкоуровневые команды шифрования процессоров VIA C3 и C7, что позволяет последнему быть одним из лидеров теста, превосходя по производительности ряд многоядерных процессоров Intel и AMD.Julia - тестирует производительность блоков процессора, выполняющих операции с плавающей запятой, в вычислениях с 32-разрядной точностью. Моделирует несколько фрагментов фрактала Жюлиа. При возможности использует инструкции MMX, SSE и 3DNow!.

FPU Mandel - тестирует производительность блоков процессора, выполняющих операции с плавающей запятой, в вычислениях с 64-разрядной точностью путем моделирования нескольких фрагментов фрактала Мандельброта <#"justify">Компания FinalWire Ltd. анонсировала о приобретении программы для диагностики, тестирования, аппаратного мониторинга, Lavalys Everest. Тем самым, программа Lavalys Everest официально прекращает свое существование, уступая дорогу новой утилите под названием AIDA64. Разработка программы официально прекращена 19 ноября 2010 года.- в прошлом популярная бесплатная программа для просмотра информации об аппаратной и программной конфигурации компьютера. Её развитием стали платные программы Everest (2004-2010) и AIDA64 (с 2010).


Рис. 1.2 Главный вид программы «AIDA32»


Программа анализирует конфигурацию компьютера и выдаёт подробную информацию:

о установленных в системе устройствах - процессорах, системных платах, видеокартах, аудиокартах, модулях памяти и т. д.

их характеристиках: тактовая частота, напряжение питания, размер кэшей, и т. д.

температура центрального процессора (CPU) (выбор (нажать "+") на панели слева: "Компьютер"->"Датчик", Температуры, ЦП)

поддерживаемых ими наборах команд и режимах работы

их производителях

установленном программном обеспечении

конфигурации операционной системы

установленных драйверах

автоматически загружаемых программах

запущенных процессах

имеющихся лицензиях

В программе есть тест записи в память и чтения из памяти с возможностью сравнения их результатов с эталонными. Интерфейс многоязычный и устанавливается автоматически в зависимости от установленной локали. У Aida32 есть и 16-битная версия для использования в DOS. 24 марта 2004 Tamas Miklos закрыл свой проект AIDA32, а с 19 апреля был закрыт и сайт программы.- одна из лучших информационно-диагностических программ, предоставляющая максимум информации о вашей системе. Ранее проект назывался AIDA16 и AIDA32, и программа распространялась по лицензии freeware.

Рис.1.3 Общий вид программы «AIDA64»


Затем она получила название Everest и стала shareware-продуктом. 6 октября 2010 г. программа снова вернула своё первоначальное название и теперь именуется AIDA64 (совместима как с 64-, так и с 32-разрядными Windows). AIDA64 имеет русский интерфейс (и несколько десятков других). В целом, эту программу хочется иметь не только на своём компьютере, её хочется рекомендовать другим. В первую очередь новичкам по "железу", поскольку она выдаёт полные отчёты о системе на родном языке, позволяет выполнять сравнение с реальными конфигурациями и получать полезные советы с прямыми ссылками для устранения проблем. Ещё одно преимущество программы - отсутствие необходимости её инсталлировать. AIDA64 работает сразу после разархивирования её на компьютере, из любого каталога. Поэтому однажды поставив эту программу, скажем, на диск D, вы забудете о необходимости её установки даже после выполнения команды Format C: при очередном слёте Windows. И в заключение, если вы собираетесь серьёзно увечься "железом", рекомендуется заглянуть в меню "Избранное", в котором присутствует много ссылок на полезные ресурсы по интересующей вас тематике. В настоящее время существуют две версии программы AIDA64: Extreme Edition и Business Edition
Различия версий можно узнать на страницах описаний программ официального сайта.
Структура каталогов для Zip архивов старых бета версий и новых финальных и бета версий слегка различается: в новых версиях языковые файлы расположены в подкаталоге /Language, в старых бетах всё было свалено в одну кучу. Оба варианта рабочие и их достаточно просто распаковать и запустить файл aida64.exe. Отчёты программа по умолчанию сохраняет в подкаталоге /Reports. Результаты полученных в AIDA64 тестов производительности (бенчмарков) не сопоставимы не только с результатами полученными в стандартных промышленных эталонных тестах Standard Performance Evaluation Corporation (SPEC) или с другими популярными бенчмарками, но так же и между различными версиями AIDA64 и не воспроизводимы даже в пределах одного сеанса измерений - авторы постоянно меняют применяемые ими самодельные алгоритмы измерения проверить правильность результатов которых не возможно. Эти цифры могут использоваться только для примерной оценки производительности оборудования в качестве весьма и весьма приближённых и очень сомнительных оценочных показателей поскольку их разброс в пределах серии измерений проведённой в течении одного сеанса при неизменных условиях тестирования может достигать ±50% и более.






РАЗДЕЛ 2. Среда и языки разработки


В данном разделе описаны среда разработки, в которой написана программа и язык программирования.


Среда разработки Delphi 7


Embarcadero Delphi, ранее Borland Delphi и CodeGear Delphi, -интегрированная среда разработки <#"justify">Новое в Delphi 2009:

полная поддержка Unicode <#"justify">25 августа 2009 года компания Embarcadero Technologies объявила о выпуске интегрированной среды разработки Embarcadero Rad Studio 2010, в которую вошла новая версия Delphi 2010.

Новое в Delphi 2010:

Поддержка Windows 7 <#"justify">Возможности Delphi 2010 Architect:2010 Architect включает все возможности редакции Delphi 2010 Enterprise и ряд дополнительных возможностей.

Обратное проектирование, анализ и оптимизация баз данных.

Создание логических и физических моделей на основе сведений, извлеченных из баз данных и файлов сценариев.

Удобные для восприятия и навигации диаграммы.2010 Architect дает возможность прямого проектирования путем автоматического создания кода базы данных из моделей.

В Delphi 2010 Architect усовершенствовано двунаправленное сравнение и объединение моделей и структур баз данных.

Delphi XEXE (Delphi 2011, code named Fulcrum), была выпущена 30 августа 2010. Новые возможности Delphi XE:

Интеграция Subversion.

Новые возможности VCL и RTL.

Доработки в редакторе кода.

Обновление DataSnap, в частности по части поддержки новых версий СУБД.

Обновление средств моделирования, поддержка диаграмм последовательностей.

Новые возможности для расширения IDE, обновленный Open Tools API.XE2

сентября 2011 года Embarcadero выпустила RAD Studio XE2, которая включает в себя Delphi XE2, а также C++Builder, Prism XE2 и RadPHP XE2.

Новое в Delphi XE2:

Поддержка платформы x64 (пока только для Windows).

Поддержка операционных систем Mac OS X и iOS.

Кросс-платформенная библиотека FireMonkey <#"justify">Значительные улучшения в технологии DataSnap. В частности, добавлены генераторы заготовок приложений с кодом взаимодействия с создаваемым DataSnap-сервером для большинства мобильных платформ, на разных, соответствующих платформам, языках программирования.XE3

сентября 2012 года Embarcadero выпустила RAD Studio XE3. Delphi XE3 поддерживает 32 битную и 64 битную редакции Windows (включая Windows 8) и улучшенную поддержку Apple Mac OS X с фреймворком Firemonkey 2/FM². Поддержка iOS была изначально прекращена (с намерением вернуть ее обратно в отдельном продукте - Mobile Studio), но приложения могут по прежнему разрабатывать под эту платформу разрабатывая с Delphi XE2.XE4

RAD Studio XE4 появилась в продаже 23 апреля 2013 <#"justify">Нововведения:

Вернулась поддержка iOS <#"justify">Руководство программиста


В данном разделе перечислены и описаны все функции, которые используются в программе:

Главное окно, в котором находится TListBox, кнопки, определяющие все главные функции программы.

Дополнительные окна, для интерфейса пользователя и удоства использования программы.

Функция выводит на экран всю информацию об имени текущего пользователя средствами функций WinAPI.

function GetComputerNetName:string; //узнаем имя компьютера:array[0..255] of Char;:DWORD;:=256;GetComputerName(buffer,size) then:=bufferResult:= '';

end;

Функция выводит на экран всю информацию об имени текущего пользователя средствами функций WinAPI.

function GetCurrentUserName:String; //узнаем имя текущего пользователя=254;:String;:DWORD;:=cnMaxUserNameLen-1;(sUserName,cnMaxUserNameLen);(PChar(sUserName),dwUserNameLen);(sUserName,dwUserNameLen);

Result:=sUserName;;


Руководство пользователя


Данный раздел содержит краткое руководство пользователя по работе с программой, а также описание всех имеющихся окон и методы взаимодействия с ними.

Главное окно имеет удобный и интуитивно понятный интерфейс. Главное окно, на которое попадает пользователь программой InfoPC - это окно с приветствием и навигацией по программе. На нижней панели программы находятся кнопки переключения. С помощью этих кнопок можно легко перемещаться по окнам программы и работать с ее функционалом.


Рис.3.4.Вид главного окна

Далее можно проверить работоспособность программы, например выберем информацию об оперативной памяти:


Рис. 3.5.Первое дополнительное окно, которое мы рассмотрим это «Информация о пользователе»:


Рис.3.6.Вид при активации доп. окна «Информация о пользователе»


Далее проверим на работоспособность дополнительное окно «Локальные диски», предназначенное для просмотра содержимого локальных дисков и съемных устройств:

Рис.3.7.Окно «Локальные диски»


Далее перейдем в окно «Дополнительная информация». Тут содержится информация, которая не попала не в один из разделов но является так же многозначительной:

Рис.3.8.Вид окна «Дополнительная информация»

ВЫВОДЫ


В процессе разработки данного приложения были изучены принципы программирования средствами WinAPI. Конечная программа имеет простейший в использовании интерфейс пользователя и в то же время имеет вполне широкий функционал. В результате разработки данной программы также была затронута тема реестра. Но основная часть программы написана на функциях Windows API. Программа InfoPC отличается от своих аналогов простым интерфейсом и структурированностью. Вся программа структурирована по отдельным разделам, что делает поиск нужного устройства еще более простым. Все вышеназванные цели были достигнуты.



СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ


1. Финогенов К. Г. Win32. Основы программирования. - 2-е изд., испр. и дополн. - М.: ДИАЛОГ-МИФИ, 2006.

. Гэри Неббет Справочник по базовым функциям API Windows NT/2000 = Windows NT/2000 Native API Reference. - М.: «Вильямс», 2002. - С. 528. - ISBN 1-57870-199-6

. RSDN Magazine #4-2005

. #"justify">. #"justify">ПРИЛОЖЕНИЕ А

Unit1;


, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons, ToolWin, ComCtrls, ExtCtrls;

= class(TForm): TToolBar;: TSpeedButton;: TListBox;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;SpeedButton1Click(Sender: TObject);SpeedButton2Click(Sender: TObject);SpeedButton6Click(Sender: TObject);SpeedButton7Click(Sender: TObject);SpeedButton8Click(Sender: TObject);FormActivate(Sender: TObject);SpeedButton9Click(Sender: TObject);SpeedButton10Click(Sender: TObject);SpeedButton3Click(Sender: TObject);FormCreate(Sender: TObject);

{ Private declarations }

{ Public declarations };

: TForm1;

Unit2, Unit3, Unit4;

{$R *.dfm}

TForm1.SpeedButton1Click(Sender: TObject); //инф о процессоре:TSystemInfo;.items.Clear;(SysInfo);ListBox1.Items,SysInfo do('ProcessorArchitecture: '+IntToStr(wProcessorArchitecture));(FloatToStr(dwPageSize)+' Kb page size');(Format('Lowest memory address accessible to applications and DLL - %p',[lpMinimumApplicationAddress]));(Format('Highest memory address accessible to applications and DLL - %p',[lpMaximumApplicationAddress]));('OEMID:'+IntToStr(dwOemId));('ActiveProcessorMask:'+IntToStr(dwActiveProcessorMask));(IntToStr(dwNumberOfProcessors)+' - number of processors');('ProcessorType:'+IntToStr(dwProcessorType));wProcessorLevel of

:Add('Intel 80386 processor level');

:Add('Intel 80486 processor level');

:Add('Intel Pentium processor level');;(FloatToStr(dwAllocationGranularity/1024)+' Kb - granularity with which virtual memory is allocated');('ProcessorRevision:'+IntToStr(wProcessorRevision));;;

TForm1.SpeedButton2Click(Sender: TObject);//инф о памяти:TMemoryStatus;.Items.Clear;.dwLength:=SizeOf(MemoryStatus);(MemoryStatus);MemoryStatus do.items.Add(IntToStr(dwMemoryLoad)+'% использованно памяти');.items.Add(IntToStr((dwTotalPhys div 1024) div 1024)+' Мб всего физической памяти');.items.Add(IntToStr((dwAvailPhys div 1024) div 1024)+' Мб доступно физической памяти');.items.Add(IntToStr((dwTotalPageFile div 1024) div 1024)+' Мб всего виртуальной памяти');.items.Add(IntToStr((dwAvailPageFile div 1024) div 1024)+' Мб доступно виртуальной памяти');.items.Add(IntToStr((dwTotalVirtual div 1024) div 1024)+' Мб адресное виртуальное простанство текущего процесса');

listbox1.items.Add(IntToStr((dwAvailVirtual div 1024) div 1024)+' Мб доступно виртуального адресного пространства текущего процесса');

end;;

TForm1.SpeedButton6Click(Sender: TObject); //показать вторую форму.Show;;

TForm1.SpeedButton7Click(Sender: TObject);//серийный номер винчестера:Word;,b:DWORD;:array [0..255] of Char;.Items.Clear;GetVolumeInformation('c:\',Buffer,SizeOf(Buffer),@SerialNum,a,b,nil,0) then.Items.Add('Серийные номер винчестера:');.Items.Add(IntToStr(SerialNum));;;

TForm1.SpeedButton8Click(Sender: TObject); //показать форму 3.Show;;

TForm1.FormActivate(Sender: TObject); //плавно всплывающее окно и приветствие=127;:Byte;.Items.Add(' ');.Items.Add(' ');.Items.Add(' ');.Items.Add(' ');

ListBox1.Items.Add('Добро пожаловать в программу InfoPC!');

ListBox1.Items.Add(' ');.Items.Add(' ');.Items.Add(' ');

ListBox1.Items.Add('Данный проект является курсовой работой и не подлежит копированию и редактированию');

ListBox1.Items.Add(' ');.Items.Add(' ');.Items.Add(' ');

ListBox1.Items.Add('Все права защищенны');

ListBox1.Items.Add(' ');.Items.Add(' ');.Items.Add(' ');

ListBox1.Items.Add('Приятного пользование');

ListBox1.Items.Add(' ');.Items.Add(' ');.Items.Add(' ');.Items.Add('Удачи!');.Items.Add(' ');.Items.Add(' ');.Items.Add(' ');:=True;i:=1 to n do:=i*2;;;;

TForm1.SpeedButton9Click(Sender: TObject); //полная очистка.Clear;.Items.Add(' ');.Items.Add(' ');.Items.Add(' ');.Items.Add(' ');

ListBox1.Items.Add('Добро пожаловать в программу InfoPC!');

ListBox1.Items.Add(' ');.Items.Add(' ');.Items.Add(' ');

ListBox1.Items.Add('Данный проект является курсовой работой и не подлежит копированию и редактированию');

ListBox1.Items.Add(' ');.Items.Add(' ');.Items.Add(' ');

ListBox1.Items.Add('Все права защищенны');

ListBox1.Items.Add(' ');.Items.Add(' ');.Items.Add(' ');

ListBox1.Items.Add('Приятного пользование');

ListBox1.Items.Add(' ');.Items.Add(' ');.Items.Add(' ');.Items.Add('Удачи!');.Items.Add(' ');.Items.Add(' ');.Items.Add(' ');;

TForm1.SpeedButton10Click(Sender: TObject); //видеоадаптеры и видеорежимы:TDisplayDevice;:TDevMode;:String;,j,k:integer;:DWORD;:DWORD;.Items.Clear;.cb:=sizeof(lpDisplayDevice);:=0;:=0;EnumDisplayDevices(nil,cc,lpDisplayDevice,dwFlags) do(cc);.Items.add(lpDisplayDevice.DeviceString);;.Items.Add(' ');

// Подготовка структуры lpDisplayDevice.cb:=sizeof(lpDisplayDevice);

// Получение списка видеоадаптеров:=0;EnumDisplayDevices(nil,i,lpDisplayDevice,0) do(i);.Items.Add('***** '+lpDisplayDevice.DeviceString + ' *****');.Items.Add(' DeviceName = '+lpDisplayDevice.DeviceName+' - '+lpDisplayDevice.DeviceString);:=lpDisplayDevice.DeviceName;:=0;.Items.Add(' Мониторы: ' );

// Получение списка мониторовEnumDisplayDevices(@S[1],j,lpDisplayDevice,0) do

begin(j);.Items.add(' DeviceMonitor = '+lpDisplayDevice.DeviceName+' - '+lpDisplayDevice.DeviceString);;:=0;.Items.Add(' Видеорежимы: ' );

// Получение списка поддерживаемых видеорежимовEnumDisplaySettings(Pchar(S), k, DevMode) do.Items.Add(' --- режим № '+IntToStr(k)+' ---');(k);.Items.Add('DevMode.dmDeviceName = '+DevMode.dmDeviceName);.Items.Add('DevMode.dmBitsPerPel = '+IntToStr(DevMode.dmBitsPerPel));.Items.Add('DevMode.dmPelsWidth = '+IntToStr(DevMode.dmPelsWidth));.Items.Add('DevMode.dmPelsHeight = '+IntToStr(DevMode.dmPelsHeight));.Items.Add('DevMode.dmDisplayFrequency = '+IntToStr(DevMode.dmDisplayFrequency)+' Гц');;;;

TForm1.SpeedButton3Click(Sender: TObject);//показать окно "Расширенная информация".Show;;

TForm1.FormCreate(Sender: TObject);.Left:=(Screen.Width-Form1.Width) div 2; //по середине моннитора.Top:=(Screen.Height-Form1.Height) div 2;;

.

ПРИЛОЖЕНИЕ БUnit2;


, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Buttons, StdCtrls, unit1;

= class(TForm): TEdit;: TEdit;: TSpeedButton;: TMemo;: TLabel;: TLabel;: TLabel;SpeedButton1Click(Sender: TObject);FormActivate(Sender: TObject);FormCreate(Sender: TObject);


{ Private declarations }

{ Public declarations };

: TForm2;



{$R *.dfm}

GetComputerNetName:string; //узнаем имя компьютера:array[0..255] of Char;:DWORD;:=256;GetComputerName(buffer,size) then:=bufferResult:= '';;

GetCurrentUserName:String; //узнаем имя текущего пользователя=254;:String;:DWORD;:=cnMaxUserNameLen-1;(sUserName,cnMaxUserNameLen);(PChar(sUserName),dwUserNameLen);(sUserName,dwUserNameLen);:=sUserName;;

TForm2.SpeedButton1Click(Sender: TObject); //информация о пользователе=800; // расчет (SizeOf(Pointer)=4 *200):THandle;:PTOKENPRIVILEGES;:Cardinal;:Integer;:PChar;:PChar;:Cardinal;:Cardinal;:Cardinal;.Lines.Clear;.text:=GetComputerNetName; //вызываем функцию имени "имя компьютера"

Edit2.text:= GetCurrentUserName; //вызываем функцию "имя пользователя"

GetMem(pTokenInfo, TokenSize);not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken) then ShowMessage('OpenProcessToken error');not GetTokenInformation(hToken, TokenPrivileges, pTokenInfo, TokenSize, ReturnLen) then('GetTokenInformation error');(PrivName, 255);(DisplayName, 255);i := 0 to pTokenInfo.PrivilegeCount - 1 do:= 255;:= 255;(nil, pTokenInfo.Privileges[i].Luid, PrivName, Namesize);(nil, PrivName, DisplayName, DisplSize, LangId);.lines.Add(PrivName +^I + DisplayName);;(PrivName);(DisplayName);(pTokenInfo);;


TForm2.FormActivate(Sender: TObject); //плавно всплывающее окно для формы 2=127;:Byte;:=True;i:=1 to n do:=i*2;;;;

TForm2.FormCreate(Sender: TObject);.Left:=(Screen.Width-Form2.Width) div 2; //по середине моннитора.Top:=(Screen.Height-Form2.Height) div 2;;

.

ПРИЛОЖЕНИЕ В

Unit3;


, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, unit1, ComCtrls;

= class(TForm): TTreeView;FormCreate(Sender: TObject);TreeView1Expanding(Sender: TObject; Node: TTreeNode;AllowExpansion: Boolean);FormActivate(Sender: TObject);

{ Private declarations }


{ Public declarations };

: TForm3;



{$R *.dfm}NextLevel(ParentNode: TTreeNode); //переключение и показ папок на лок дискахDirectoryName(name: string): boolean;:=(name<>'.') and (name<>'..');;, srChild: TSearchRec;: TTreeNode;: string;:=ParentNode;:='';:=node.Text+'\'+path;:=node.Parent;node=nil;FindFirst(path+'*.*', faDirectory, sr)=0 then(sr.Attr and faDirectory <> 0) and DirectoryName(sr.Name):=Form3.TreeView1.Items.AddChild(ParentNode, sr.Name);.ImageIndex:=0;.SelectedIndex:=1;.HasChildren:=false;FindFirst(path+sr.Name+'\*.*', faDirectory, srChild)=0(srChild.Attr and faDirectory<>0) and DirectoryName(srChild.Name)node.HasChildren := true;(FindNext(srChild) <> 0) or node.HasChildren;;(srChild);;FindNext(sr) <> 0;ParentNode.HasChildren:=false;(sr);;

TForm3.FormCreate(Sender: TObject); //показать локальные диски и находящиеся

//в них папки:array [0..6] of String=('CLOSEDFOLDER','OPENFOLDER','FLOPPY','HARD','NETWORK','CDROM','RAM');:Char;:String;:TTreeNode;:Integer;,mask:TBitmap;:Integer;.Left:=(Screen.Width-Form3.Width) div 2; //по середине моннитора.Top:=(Screen.Height-Form3.Height) div 2;

.Items.BeginUpdate;.Images:=TImageList.CreateSize(16, 16);:=TBitmap.Create;:=TBitmap.Create;i:=low(IconNames) to high(IconNames) do.Handle:=LoadBitmap(HInstance, PChar(IconNames[i]));.Width:=16;.Height:=16;.Assign(bm);.Mask(clBlue);.Images.Add(bm, mask);;c:='A' to 'Z' do:=c+':';:=GetDriveType(PChar(s));DriveType=1 then continue;:=Form3.TreeView1.Items.AddChild(nil, s);DriveType of_REMOVABLE: node.ImageIndex:=2;_FIXED: node.ImageIndex:=3;_REMOTE: node.ImageIndex:=4;_CDROM: node.ImageIndex:=5;node.ImageIndex:=6;;.SelectedIndex:=node.ImageIndex;.HasChildren:=true;;.Items.EndUpdate;

;

TForm3.TreeView1Expanding(Sender: TObject; Node: TTreeNode;AllowExpansion: Boolean);.Items.BeginUpdate;.DeleteChildren;(Node);.Items.EndUpdate;;

TForm3.FormActivate(Sender: TObject); //плавно всплывающее окно для формы 3n=127;:Byte;:=True;i:=1 to n do:=i*2;;;;

.


ПРИЛОЖЕНИЕ Г

Unit4;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Winsock, registry, ExtCtrls, StdCtrls, ImgList, Buttons, ShellAPI, ComCtrls;= class(TForm): TImage;: TTimer;: TStatusBar;: TImageList;: TImage;FormShow(Sender: TObject);Timer1Timer(Sender: TObject);FormCreate(Sender: TObject);FormActivate(Sender: TObject);Image2Click(Sender: TObject);

{ Private declarations }info(s1, s2: string);;: TForm4;_speed_y: Integer;_text_y: Integer;

_eax, _ebx, _ecx, _edx: Longword;: Integer;: Byte;: Word;,s1,s2,s3,s_all:string;:TImageIndex;: TDisplayDevice;: DWORD;: DWORD;_speed_x: Integer =8;_text_x: Integer =15;_start: Boolean =True;

{$R *.dfm}TForm4.FormShow(Sender: TObject);

_eax, _ebx, _ecx, _edx: Longword;: Integer;: Byte;, s1, s2, s3, s_all: string;:TMemoryStatus;: WORD;: TWSAData;: pchar;: PHostEnt;: array[0..128] of char;:integer;:DWORD;: array [0..255] of char;:TOSVersionInfo;('','');

//Set the startup colour of the image.Canvas.Brush.Color:=clBtnFace;.Canvas.FillRect(rect(0, 0, Image1.Width,Image1.Height));//get brand IDeax,$80000002$0F$A2_eax,eax_ebx,ebx_ecx,ecx_edx,edx;:= '';:= '';:= '';:= '';i := 0 to 3 do:= lo(_eax);:= s3 + chr(b);:= lo(_ebx);:= s + chr(b);:= lo(_ecx);:= s1 + chr(b);:= lo(_edx);:= s2 + chr(b);

_eax := _eax shr 8;

_ebx := _ebx shr 8;

_ecx := _ecx shr 8;

_edx := _edx shr 8;;_all := s3 + s + s1 + s2;eax,$80000003$0F$A2_eax,eax_ebx,ebx_ecx,ecx_edx,edx;:= '';:= '';:= '';:= '';i := 0 to 3 do:= lo(_eax);:= s3 + chr(b);:= lo(_ebx);:= s + chr(b);:= lo(_ecx);:= s1 + chr(b);:= lo(_edx);:= s2 + chr(b);

_eax := _eax shr 8;

_ebx := _ebx shr 8;

_ecx := _ecx shr 8;

_edx := _edx shr 8;;_all := s_all + s3 + s + s1 + s2;eax,$80000004$0F$A2_eax,eax_ebx,ebx_ecx,ecx_edx,edx;:= '';:= '';:= '';:= '';i := 0 to 3 do:= lo(_eax);:= s3 + chr(b);:= lo(_ebx);:= s + chr(b);:= lo(_ecx);:= s1 + chr(b);:= lo(_edx);:= s2 + chr(b);

_eax := _eax shr 8;

_ebx := _ebx shr 8;

_ecx := _ecx shr 8;

_edx := _edx shr 8;;s2[Length(s2)] = #0 then setlength(s2, Length(s2) - 1);('', 'Процессор - ' + s_all + s3 + s + s1 + s2);;.cb := sizeof(lpDisplayDevice);EnumDisplayDevices(nil, cc, lpDisplayDevice, dwFlags) do(cc);('', 'Видео карта - ' + lpDisplayDevice.DeviceString);;(MS);('', 'Оперативня память - '+FormatFloat('#,###" Мгб"', MS.dwTotalPhys / 1044484) );;.dwOSVersionInfoSize := SizeOf(OSVersion);GetVersionEx(OSVersion) then('', 'Версия операционной системы - ' + Format('%d.%d (%d.%s)',[OSVersion.dwMajorVersion,OSVersion.dwMinorVersion,(OSVersion.dwBuildNumber and $FFFF),OSVersion.szCSDVersion]));;:=GetLogicalDrives;isa:=0 to 25 do(ld and (1 shl isa))<>0 thenGetDriveType(PChar(Char(Ord('A')+isa) + ':\'))=DRIVE_FIXED then('','HDD - ' +Char(Ord('A')+isa)+':\');GetDriveType(PChar(Char(Ord('A')+isa) + ':\'))=DRIVE_REMOVABLE then('','Floppy - '+Char(Ord('A')+isa)+':\');GetDriveType(PChar(Char(Ord('A')+isa)+':\'))=DRIVE_CDROM then('','CD-Rom - '+Char(Ord('A')+isa)+':\');;:=MAKEWORD(1,1);(wVerReq,wsaData);(@c,128);:=GetHostByName(@c);:=iNet_ntoa(PInAddr(h^.h_addr_list^)^);;('','IP - '+iw);;('','HOST - '+h^.h_Name);;;(PathArray,SizeOf(PathArray),#0);(PathArray,255);('','Дериктория Windows - '+Format('%s',[PathArray]));;;;TForm4.info(s1, s2: string);s1 <> '' then.Canvas.Brush.Color := clBtnFace;.Canvas.Font.Color := clBlack;.Canvas.TextOut(gn_text_x, gn_text_y, s1);;s2 <> '' then.Canvas.Brush.Color := clBtnFace;.Canvas.Font.Color := clBlack;.Canvas.TextOut(gn_text_x + Image1.Canvas.TextWidth(s1), gn_text_y, s2);;(gn_text_y, 13);;TForm4.Timer1Timer(Sender: TObject);.Panels[0].Text:='Сейчас: '+DateToStr(Now)+' '+TimeToStr(Now);;TForm4.FormCreate(Sender: TObject);.Left:=(Screen.Width-Form4.Width) div 2; //по середине моннитора.Top:=(Screen.Height-Form4.Height) div 2;;TForm4.FormActivate(Sender: TObject);=127;:Byte;:=True;i:=1 to n do:=i*2;;;;TForm4.Image2Click(Sender: TObject);: TRegistry;:=TRegistry.Create;.RootKey := HKEY_CURRENT_USER;.OpenKey('SOFTWARE\MICROSOFT\Internet Explorer\Main',True);;;.



КУРСОВАЯ РАБОТА ПО ДИСЦИПЛИНЕ: Системное программирование Аппаратная характеристика ПК РЕФЕРАТ

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ