Розробка програми "Менеджер пристроїв" - Программирование, компьютеры и кибернетика курсовая работа

Розробка програми "Менеджер пристроїв" - Программирование, компьютеры и кибернетика курсовая работа




































Главная

Программирование, компьютеры и кибернетика
Розробка програми "Менеджер пристроїв"

Призначення менеджеру пристроїв. Обґрунтування вибору мови програмування. Розробка структурної схеми і опис діалогового інтерфейсу програми. Блок-схема програмного додатку, основні функції і алгоритм його роботи. Методики і інструкція його тестування.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Вінницький національний технічний університет
на тему: Розробка програми менеджер пристроїв
Спеціальності «Програмна Інженерія»
У роботі розроблено програму менеджер пристроїв, для перерахування встановлених пристроїв. Реалізовано виведення пристроїв у дереві. Програму призначено для перегляду пристроїв та інформації про них.
Додаток А - лістинг програми devmgr.cpp…
Додаток Б - Лістинг програми GetTypeInfo.cpp
Менеджер пристроїв відображає встановлене на комп'ютері обладнання в графічному поданні. Всі пристрої взаємодіють з ОС Windows за допомогою програми, яка називається драйвером пристрою.
Для того щоб підключити обладнання до комп'ютера, недостатньо просто фізично приєднати його до системного блоку. Щоб операційна система розпізнала це обладнання, необхідна наявність спеціальної програми - драйвер. Тільки після цього комп'ютер «побачить» обладнання і зможе працювати з ним в єдиній зв'язці.
Драйвер (англ. driver) -- комп'ютерна програма, за допомогою якої операційна система отримує доступ до приладу апаратним забезпеченням [1].
Апаратне забезпечення - електронні та механічні частини обчислювального пристрою, що входять до складу системи або мережі, виключаючи програмне забезпечення і дані (інформацію, яку обчислювальна система зберігає й обробляє). Апаратне забезпечення включає: комп'ютери та логічні пристрої, зовнішні пристрої та діагностичну апаратуру, енергетичне обладнання, батареї та акумулятори [2].
У загальному випадку для використання кожного пристрою, підключеного до комп'ютера, необхідний спеціальний драйвер. Зазвичай операційна система вже містить драйвери для ключових компонентів апаратного забезпечення, без яких система не зможе працювати. Однак для більш специфічних пристроїв (таких, як графічна плата або принтер) можуть знадобитися спеціальні драйвери, які надає виробник пристрою.
В менеджері пристроїв можна подивитися, який жорсткий диск встановлений і скільки їх взагалі в системі, який центральний процесор використовується, вказана модель відео карти, показано наявність мережевих адаптерів (мережевих карт) і багато іншого.
1. Аналіз сучасного стану питання та обгрунтування завдання на роботу
Зазвичай менеджер пристроїв використовується для перевірки стану обладнання та оновлення драйверів. Досвідчені користувачі, які добре знаються в структурі апаратного забезпечення комп'ютера, можуть за допомогою менеджера пристроїв проводити діагностику роботи обладнання для усунення конфліктів пристроїв і зміни параметрів ресурсів.
У «Менеджері пристроїв» Windows зберігається інформація про пристрої, встановлені на комп'ютері. У ньому зберігається наступна інформація:
1. Відомості про справність / несправність роботи пристроїв, а також повідомлення про помилки при виникненні неполадок.
2. Відомості про встановлені пристрої
5. Інформація про драйвери пристроїв
Рисунок 1.1 - «Менеджер пристроїв» Windows
У «Менеджері пристроїв» Windows можна вносити зміни до властивостей пристроїв.
Everest - програма для перегляду інформації про апаратні і програмні конфігурації комп'ютера, розроблена компанією Lavalys. Була послідовницею AIDA32, замінена на ринку програмою AIDA64 [3].
Програма аналізує конфігурацію комп'ютера і видає детальну інформацію:
1. Про встановлені в системі пристрої
3. Підтримуваних ними наборах команд і режимах роботи
5. Встановлене програмне забезпечення
6. Конфігурацію операційної системи
8. Автоматичне завантажування програм
Програма «Device Remover» є потужним додатком, що дозволяє вам переглядати і управляти пристроями, встановленими на вашому комп'ютері. Програма надає детальну інформацію про кожну послугу чи пристрій, який використовується [4].
Деякі ключові особливості «Device Remover»:
1. Поглиблене уявлення всіх встановлених пристроїв, класів пристроїв, драйверів і сервісів в системі Windows
2. Легке видалення декількох пристроїв On-The-Fly
3. Модифікація / Маніпуляція пристроїв, драйверів і служб у Системі
Рисунок 1.3 - Програма «Device Remover»
1.2 Обґрунтування вибору мови програмування
Мова програмування -- формальна знакова система, призначена для запису комп'ютерних програм. Мову програмування визначає набір лексичних, синтаксичних і семантичних правил, визначаючих зовнішній вигляд програми і дії, які виконає виконавець (комп'ютер) під її управлінням.
1. Функція: мова програмування призначена для написання комп'ютерних програм, які застосовуються для передачі комп'ютеру інструкцій по виконанню того або іншого обчислювального процесу і організації управління окремими пристроями.
2. Завдання: мова програмування відрізняється від природних мов тим, що призначена для передачі команд і даних від людини до комп'ютера, тоді як природні мови використовуються для спілкування людей між собою. Можна узагальнити визначення «мов програмування» -- це спосіб передачі команд, наказів, чіткого керівництва до дії, тоді як людські мови служать також для обміну інформацією.
3. Виконання: мова програмування може використовувати спеціальні конструкції для визначення і маніпулювання структурами даних і управління процесом обчислень.
Основними мовами програмування є Java, C, C++, C#, PHP, VisualBasic, Delphi та інші.
Мова програмування С # - розроблена в корпорації Microsoft групою програмістів під керівництвом Андер-са Хейльсберга і Скотта Вілтамата, була створена спеціально для платформи .NET. C # є і Web орієнтованою мовою програмування.
С # - це подієво-керована, повністю об'єктно-орієнтована мова візуального програмування, в якій програми створюються за допомогою інтегрованого середовища розробки (Integrated Development Environment, IDE). У цьому середовищі програміст може писати, запускати, тестувати і налагоджувати програми, написані на С #. Процес оперативного створення програмних додатків за допомогою IDE називається швидкої розробкою додатків (Rapid Application Development, RAD).
C # призначена для створення переносимого коду. Всі змінні автоматично ініціалізуються середовищем і мають типову захищеність, що дозволяє уникнути невизначених ситуацій у разі відсутності ініціалізації, зміни в об'єкті або спроби виконати недопустиме перетворення типів.
У C # уніфікована система типів: кожен тип розглядається як об'єкт. Об'єкти зібрані в простір імен (namespaces), який дозволяє програмно звертатися до чого-небудь. C # дозволяє використовувати типізовані, розширювані метадані, які можуть бути прикріплені до об'єкта. Архітектурою проекту можуть визначатись локальні атрибути, які будуть пов'язані з будь-якими елементами мови - класами, інтерфейсами і т.д.
Java -- об'єктно-орієнтована мова програмування, випущена компанією SunMicrosystems у 1995 році як основний компонент платформи Java. Синтаксис мови багато в чому походить від C та C++. У офіційній реалізації, Java програми компілюються у байткод, який при виконанні інтерпретується віртуальною машиною для конкретної платформи. Всі дані і дії групуються в класи об'єктів. Виключенням з повної об'єктності є примітивні типи (int, float тощо). Через це, Java не вважається повністю об'єктно-орієнтовною мовою.
Програми на Java утворені з визначень класів та інтерфейсів. Класи містять змінні та сталі, які утримують дані, методи, які виконують дії, та конструктори, які створюють екземпляри класів -- об'єкти. Дані можуть мати простий тип (наприклад байт, ціле число, символ) або бути посиланням на об'єкт. Мова Java є статично типізованою.
1. відсутність можливості оперативного доступу до змінних і методів класу;
2. відсутність спливаючої підказки по методах, які можна застосувати до поточного об'єкту;
C++ -- універсальна мова програмування високого рівня з підтримкою декількох парадигм програмування: об'єктно-орієнтованої, узагальненої та процедурної. Розроблена Б'ярном Страуструпом в AT&T Bell Laboratories (Мюррей-Хілл, Нью-Джерсі) у 1979 році та названа «Сі з класами». Страуструп перейменував мову у C++ 1983 р.. Базується на мові С. У мові С++ немає вбудованих засобів вводу/виводу - вони здійснюються за допомогою функцій, типів та об'єктів, що містяться у стандартних бібліотеках. Використовується два способи: функції, успадковані з мови С та об'єкти С++. Всі обўєкти (змінні, масиви тощо), з якими працює програма в С++, необхідно визначати або описувати. Кожна змінна у програмі - це об'єкт, який володіє ім'ям і значенням. Після визначення змінної з ініціалізацією всі звернення у програмі до неї за іменем замінюються компілятором на адресу іменованої області оперативної пам'яті, в якій зберігається значення змінної. Підтримує роботу на низькому рівні з пам'яттю, адресами, портами. Надає можливість створювати узагальнені алгоритмів для різних типів даних, їх спеціалізацію, і обчислення на етапі компіляції, з використанням шаблонів [5].
Розглянувши такі мови програмування, як С++, C# та Java, для розробки програмного додатку було вибрано об'єктно-орієнтовану мову програмування С++, яка є мовою високого рівня і дозволяє швидко і ефективно створювати програми.
менеджер пристрій інтерфейс програма
2.1 Обґрунтування вибору інтерфейсу
Інтерфейс -- сукупність засобів, методів і правил взаємодії (управління, контролю) між елементами системи.
Інтерфейс користувача -- сукупність засобів для обробки та відображення інформації, максимально пристосованих для зручності користувача; різновид інтерфейсів, в якому одна сторона представлена людиною (користувачем), інша -- машиною/пристроєм. Представляє собою сукупністю засобів і методів, за допомогою яких користувач взаємодіє з різними, найчастіше складними, машинами, пристроями і апаратурою.
При розробці інтерфейсу необхідно враховувати наступні принципами:
1. Стандартизація. Рекомендується використовувати стандартні, перевірені багатьма програмістами і користувачами інтерфейсні рішення.
2. Зручність і простота роботи. Інтерфейс повинен бути інтуїтивно зрозумілим. Бажано, щоб усі дії легко запам'ятовувалися і не вимагали стомлюючих процедур.
3. Зовнішній дизайн. Важливо, щоб інтерфейс не стомлював зір. Він повинен бути розрахований на тривалу роботу користувача з додатком протягом дня.
До сукупності засобів, за допомогою яких користувач взаємодіє з різними програмами і пристроями, відносяться:
1. Інтерфейс командного рядка: інструкції комп'ютеру даються шляхом введення з клавіатури текстових рядків (команд).
2. Графічний інтерфейс користувача: програмні функції представляються графічними елементами екрану.
3. Діалоговий інтерфейс: наприклад, пошук
4. Природно-мовний інтерфейс: користувач «розмовляє» з програмою на рідній йому мові.
5. Тактильний інтерфейс: кермо, джойстик і так далі
6. Нейрокомп'ютерний інтерфейс (англ. brain-computerinterface): відповідає за обмін між нейронами і електронним пристроєм за допомогою спеціальних імплантованих електродів [6].
Для написання даної програми було вирішено обрати діалоговий інтерфейс, адже при використанні програми буде вестись діалог між користувачем та комп'ютером за допомогою графічних елементів: меню, вікон, тощо.
Для забезпечення діалогу між програмою та користувачем було вирішено використовувати діалогове вікно, розроблене за SDI (SingleDocumentInterface) типом інтерфейсу.
Діалогове вікно -- це особливий тип вікна, яке задає запитання і дозволяє вибрати варіанти виконання дії, або ж інформує користувача. Діалогові вікна зазвичай відображаються тоді, коли програмі для подальшої роботи потрібна відповідь користувача.
Одновіконний (SDI) інтерфейс - це тип інтерфейсу, у якому надається можливість роботи тільки з одним документом в одному вікні. Під документом у цьому випадку потрібно розуміти форму, призначену для роботи з даними, а не з конкретним документом. Цей тип інтерфейсу підходить для програм, створених для роботи з документом одного типу з невеликою кількістю полів.
Інтерфейс програмного додатку менеджер пристроїв реалізовано на основі інтерфейсу типу SDI, програма складається з одного діалогового вікна Т подібної структури, в якому містяться всі необхідні елементи керування.
Для реалізації всіх команд, що потрібні для повноцінної роботи програми, на діалоговому вікні було розміщено та використано наступні елементи:
1. Menu «Файл» - слугує для обновлення програми та виходу із неї
2. Menu «Інформація» - слугує для виводу інформації про програму та інструкцію користування
3. TreeCtrl - дерево для відображення пристроїв
4. ListControl - список для відображення інформації про пристрій
Рисунок 2.1 - Структурна схема графічного інтерфейсу програми
Вікно програми має стандартних для Windows інтерфейс. У його верхній частині знаходиться класичне меню: Файл, Інформація. У списку під назвою комп'ютера можна побачити всі категорії встановленого обладнання. По кожній категорії можна отримати список встановлених на комп'ютері пристроїв даного типу. Кількість необхідних для повноцінної роботи програми полів та кнопок зведено до мінімуму.
Рисунок 2.2 - Головне вікно програми
По кожній категорії можна отримати список встановлених на комп'ютері пристроїв даного типу клацнувши мишкою по значку + біля категорії яка вас цікавить, тим самим розкривши список.
Рисунок 2.3 - Дерево із закритими списками категорій
Рисунок 2.4 - Дерево із відкритими списками категорій
Для отримання більш детальної інформація про пристрій необхідно один раз на нього натиснути (рис. 2.5).
Рисунок 2.5 - Відображення інформації про пристрій
Для того щоб обновити програму потрібно в меню «Файл» натиснути кнопку «Обновити» (рис. 2.6).
При натисненні кнопки «Про програму» відображається інформація про програму (рис. 2.7).
Рисунок 2.7 - Інформація про програму
При натисненні кнопки «Довідка» викликається інструкція користування програмою (рис. 2.8).
Рисунок 2.8 - Інструкція користувача
3. Розробка моделі програмного додатку
Блок-схема - поширений тип схем (графічних моделей), що описують алгоритми або процеси, в яких окремі кроки зображуються у вигляді блоків різної форми, з'єднаних між собою лініями [7]. Нижче наведено блок-схеми основних процедур та функцій, які було використано при написанні програми.
Рисунок 3.1 - Блок схема роботи функції AddNewDeviceNode
Алгоритм -- послідовність, система, набір систематизованих правил виконання обчислювального процесу, що обов'язково приводить до розв'язання певного класу задач після скінченного числа операцій [8]. При написанні комп'ютерних програм алгоритм описує логічну послідовність операцій. Для візуального зображення алгоритмів часто використовують блок-схеми.
Рисунок 3.2 - Блок схема роботи функції AllocNewDeviceNode
Тестування -- один з розділів діагностики. Тестування застосовується в техніці, медицині, психіатрії, освіті для визначення придатності об'єкта тестування для виконання тих чи інших функцій. У завдання тестування не входить визначення причин невідповідності заданим вимогам (специфікаціям). Якість тестування і достовірність його результатів значною мірою залежить від методів тестування та складу тестів.
2. визначення реакції об'єкта тестування на тестовий набір;
Тестовий набір складається з окремих тестів і розробляється таким чином, щоб забезпечити повне або значне покриття множини ймовірних впливів на об'єкт тестування. Цим, також, визначається складність розробки як окремих тестів, так і тестових наборів.
У технічній діагностиці застосовуються формалізовані методи розробки мінімальних, необхідних і достатніх тестів перевірки працездатності (відповідності специфікаціям).
Тестування програмного забезпечення - процес дослідження, випробування програмного забезпечення з метою отримання інформації про якість продукту.
Якість програмного забезпечення можна визначити як сукупність характеристик досліджуваного ПЗ з урахуванням таких складових:
1. Модульне тестування - тестується мінімально можливий для тестування компонент, наприклад, окремий клас або функція.
2. Інтеграційне тестування - тестуються інтерфейси між компонентами, підсистемами або системами. За наявності резерву часу на даній стадії тестування ведеться ітераційно, з поступовим підключенням наступних підсистем.
3. Системне тестування - тестується інтегрована система на її відповідність вимогам.
4. Альфа - тестування - імітація реальної роботи з системою штатними розробниками, або реальна робота з системою потенційними користувачами / замовником. Найчастіше альфа - тестування проводиться на ранній стадії розробки продукту, але в деяких випадках може застосовуватися для закінченого продукту в якості внутрішнього приймального тестування.
5. Бета-тестування - у деяких випадках виконується поширення попередньої версії (у випадку пропрієтарного ПЗ іноді з обмеженнями по функціональності або часу роботи) для деякої більшої групи осіб з тим , щоб переконатися, що продукт містить достатньо мало помилок. Іноді бета -тестування виконується для того, щоб отримати зворотній зв'язок про продукт від його майбутніх користувачів.
Тестування "білої скриньки": перевіряється коректність побудови всіх елементів програми і правильність їх взаємодії один з одним. Аналізуються керуючі зв'язки елементів або інформаційні зв'язки. Тестування за принципом "білого ящика" характеризується ступенем, в якому тести виконують або покривають логіку (вихідний текст) програми.
Тестування "чорної скриньки": При тестуванні «чорної скриньки» розглядаються системні характеристики програм, ігнорується їх внутрішня логічна структура. Ці тести демонструють:
1. як виконуються функції програми;
4. як зберігається цілісність зовнішньої інформації.
Для повного тестування розробленого програмного продукту потрібно перевірити всі варіанти використання. Варіанти використання (Use Cases) це - опис послідовності дій, які може здійснювати система у відповідь на зовнішні дії користувачів або інших програмних систем. Варіанти використання відображають функціональність системи з точки зору здобуття значимого результату для користувача.
При запуску програми користувачем повинно завантажитись головне вікно програмного додатку (рис. 2.2).
При натисненні кнопки «Обновити» програма повинна обновити всі дані (рис. 4.1).
Клацнувши мишкою по значку + або по певній категорії програма повинна вивести список встановлених на комп'ютері пристроїв даного типу (рис. 4.2).
Рисунок 4.2 - Відкрита категорія «DVD»
Клацнувши один раз мишкою на пристрій програма повинна вивести більш детальну інформацію про нього (рис. 4.3).
Рисунок 4.4 - Більш детальна інформація про пристрій
При проведенні описаних тестувань було перевірено, що програма функціонує правильно.
В курсовій роботі було розроблено програму менеджер пристроїв, для перерахування встановлених пристроїв. Реалізовано виведення пристроїв у дереві. Програму призначено для перегляду пристроїв та інформації про них.
Програмний додаток був розроблений на мові С++, яка є мовою високого рівня і дозволяє швидко і ефективно створювати програми, підтримує роботу на низькому рівні з пам'яттю, адресами, портами, надає можливість створювати узагальнені алгоритмів для різних типів даних, їх спеціалізацію, і обчислення на етапі компіляції, з використанням шаблонів.
Вікно програми має стандартних для Windows інтерфейс типу SDI, який складається з одного діалогового вікна Т подібної структури з усіма необхідними елементами керування. У його верхній частині знаходиться класичне меню: Файл, Інформація. У списку під назвою комп'ютера можна побачити всі категорії встановленого обладнання. По кожній категорії можна отримати список встановлених на комп'ютері пристроїв даного типу. Кількість необхідних для повноцінної роботи програми полів та кнопок зведено до мінімуму.
За допомогою блок-схема було описано основні функції і алгоритми роботи програми.
Для тестування розробленого програмного продукту було використано варіанти використання (Use Cases) - опис послідовності дій, які може здійснювати система у відповідь на зовнішні дії користувачів або інших програмних систем.
менеджер пристрій інтерфейс програма
1. Страуструп “Программирование: принципы и практика использования C++”. Диалектика-Вильямс, 2010 г., 1248 стр.
2. Дженифер Тидвелл. Разработка пользовательских интерфейсов. - Издательство: Питер, 2008. - 487с
3. Седжвик “Алгоритмы на С++”. Вильямс, 2011 г., 1026 стр.
Додаток А - Лістинг програми DevMgr.cpp
BOOL EnablePrivilege(LPCTSTR PrviName)
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken);
if (LookupPrivilegeValue(NULL,PrviName, &Newtp.Privileges[0].Luid))
Newtp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (AdjustTokenPrivileges(hToken, FALSE, &Newtp, sizeof(Newtp), NULL, NULL))
char OpenINFFile(const char bType, char *pszName)
openFile.lStructSize = sizeof(OPENFILENAME);
openFile.lpstrFilter = "INF File(*.inf)\0*.inf\0";
openFile.lpstrFilter = "System File(*.sys)\0*.sys\0";
openFile.Flags = OFN_FILEMUSTEXIST | OFN_EXPLORER;
openFile.Flags |= OFN_HIDEREADONLY; // | OFN_ENABLETEMPLATE;
void SetCharSet(const UINT nIDList1, const UINT nIDList2)
HWND hListView1 = GetDlgItem(_hDlg, nIDList1);
HWND hListView2 = GetDlgItem(_hDlg, nIDList2);
ListViewInsertColumnText(hListView1, 0, 0, "Поле", 0);
ListViewInsertColumnText(hListView1, 1, 0, "Опис", 1);
ListViewInsertItemText(hListView1, 0, 0, "Глобально унікальний ідентифікатор");
ListViewInsertItemText(hListView1, 1, 0, "Ідентифікатор обладнання");
ListViewInsertItemText(hListView1, 2, 0, "Ідентифікатор інсталяції");
ListViewInsertItemText(hListView1, 3, 0, "Виробник");
ListViewInsertItemText(hListView1, 4, 0, "Постачальник");
ListViewInsertItemText(hListView1, 5, 0, "Опис драйвера");
ListViewInsertItemText(hListView1, 6, 0, "Назва розділу");
ListViewInsertItemText(hListView1, 7, 0, "INF дата");
ListViewInsertItemText(hListView1, 8, 0, "INF шлях");
ListViewInsertItemText(hListView1, 9, 0, "Шлях до зображення");
ListViewInsertItemText(hListView1, 10, 0, "Індекс");
ListViewInsertItemText(hListView1, 11, 0, "Шлях до пристрою");
ListViewInsertItemText(hListView1, 12, 0, "Група");
ListViewInsertItemText(hListView1, 13, 0, "Старт");
//ListViewInsertColumnText(hListView2, 0, 0, "Resource Type", 0);
//ListViewInsertColumnText(hListView2, 1, 0, "Setting", 1);
INT_PTR CALLBACK InstallDialog(HWND hDlg, UINT uMsg,
EnableWindow(GetDlgItem(hDlg, IDC_ENABLEDRVBTN), 0);
INT_PTR CALLBACK MainDialog(HWND hDlg, UINT uMsg,
static CRITICAL_SECTION criticalSection = {0};
HWND hListView = GetDlgItem(hDlg, IDC_LIST1);
EnablePrivilege(SE_LOAD_DRIVER_NAME);
if (!InitialDeviceList() || !InitialDeviceOrder())
ListViewSetExtStyle(GetDlgItem(hDlg, IDC_LIST1), 0);
ListViewSetExtStyle(GetDlgItem(hDlg, IDC_LIST2), 0);
TreeViewRemoveAllNodes(hDlg, IDC_TREE1);
EnumWDMDriver(IDC_TREE1, IDB_MYCOMP);
SendMessage(GetDlgItem(hDlg, IDC_RADIO2), BM_SETCHECK, BST_CHECKED, 0);
EnableWindow(GetDlgItem(hDlg, IDC_DELBTN), 0);
EnableWindow(GetDlgItem(hDlg, IDC_COPYPATHBTN), 0);
InitializeCriticalSection(&criticalSection);
SendMessage(hDlg, WM_DEVICECHANGE, 0, 0);
SendMessage(hDlg, WM_DEVICECHANGE, 0, 0);
DeleteCriticalSection(&criticalSection);
EnterCriticalSection(&criticalSection);
if (!InitialDeviceList() || !InitialDeviceOrder())
ListViewRemoveAllItems(GetDlgItem(hDlg, IDC_LIST1));
ListViewRemoveAllItems(GetDlgItem(hDlg, IDC_LIST2));
TreeViewRemoveAllNodes(hDlg, IDC_TREE1);
EnumWDMDriver(IDC_TREE1, IDB_MYCOMP);
LeaveCriticalSection(&criticalSection);
HWND hList = GetDlgItem(hDlg, IDC_LIST1);
if (ListViewGetItemSelect(hList) == 10 ||
ListViewGetItemSelect(hList) == 11)
ListViewGetSpecItem(hList, 10, 1, szBuf);
EnableWindow(GetDlgItem(hDlg, IDC_DELBTN), 1);
ListViewGetSpecItem(hList, 11, 1, szBuf);
EnableWindow(GetDlgItem(hDlg, IDC_COPYPATHBTN), 1);
EnableWindow(GetDlgItem(hDlg, IDC_DELBTN), 0);
EnableWindow(GetDlgItem(hDlg, IDC_COPYPATHBTN), 0);
NMTREEVIEW *pnmhTree = (NMTREEVIEW*)lParam;
TreeViewGetSelectText(GetDlgItem(hDlg, IDC_TREE1),
memcpy(szData, tvItem.pszText, strlen(tvItem.pszText));
ListViewRemoveAllItems(GetDlgItem(_hDlg, IDC_LIST1));
ListViewRemoveAllItems(GetDlgItem(_hDlg, IDC_LIST2));
FindDeviceName(szData, IDC_LIST1, IDC_LIST2);
int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,
if (DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_DIALOG1),
ShowErrorMsg(0L, GetLastError(), "DialogBoxParam");
Додаток Б - Лістинг програми GetTypeInfo.cpp
void ShowDevPropertyInfo(HWND hListView, char *szItemName,
short wCount = ListViewGetItemCount(hListView);
SendMessage(hListView, LVM_GETITEMTEXT, wCount-1, (LPARAM)&lvItem);
ListViewInsertItemText(hListView, wCount, 0, szItemName);
ListViewInsertItemText(hListView, wCount, 1, szValue);
ListViewInsertItemText(hListView, wCount, 0, szItemName);
ListViewInsertItemText(hListView, wCount-1, 1, szValue);
ListViewInsertItemText(hListView, wCount, 0, szItemName);
ListViewInsertItemText(hListView, wCount, 0, "");
ListViewInsertItemText(hListView, wCount, 1, szValue);
void GetMoreInformation(HDEVINFO hDevInfo, SP_DEVINFO_DATA spDevInfoData,
HWND hListView = GetDlgItem(_hDlg, nIDList1);
short wCount = ListViewGetItemCount(hListView);
char bIsBIG5 = (GetACP() == 950) ? 1 : 0;
if (SetupDiGetDeviceRegistryProperty(hDevInfo, &spDevInfoData, SPDRP_BUSNUMBER, 0L,
wCount = ListViewGetItemCount(hListView);
ListViewInsertItemText(hListView, wCount, 0, "BUS номер");
ListViewInsertItemText(hListView, wCount, 1, szName);
if (SetupDiGetDeviceRegistryProperty(hDevInfo,
ShowDevPropertyInfo(hListView, "Можливості", 0L);
if (dwAddr & CM_DEVCAP_LOCKSUPPORTED)
ShowDevPropertyInfo(hListView, 0L, "LockSupported");
if (dwAddr & CM_DEVCAP_EJECTSUPPORTED)
ShowDevPropertyInfo(hListView, 0L, "EjectSupported");
ShowDevPropertyInfo(hListView, 0L, "Removable");
ShowDevPropertyInfo(hListView, 0L, "DockDevice");
ShowDevPropertyInfo(hListView, 0L, "UniqueID");
if (dwAddr & CM_DEVCAP_SILENTINSTALL)
ShowDevPropertyInfo(hListView, 0L, "SilentInstall");
if (dwAddr & CM_DEVCAP_RAWDEVICEOK)
ShowDevPropertyInfo(hListView, 0L, "RawDeviceOK");
if (dwAddr & CM_DEVCAP_SURPRISEREMOVALOK)
ShowDevPropertyInfo(hListView, 0L, "SurpriseRemovalOK");
if (dwAddr & CM_DEVCAP_HARDWAREDISABLED)
ShowDevPropertyInfo(hListView, 0L, "HardwareDisabled");
ShowDevPropertyInfo(hListView, 0L, "NonDynamic");
if (SetupDiGetDeviceRegistryProperty(hDevInfo,
ShowDevPropertyInfo(hListView, "Ознака", 0L);
if (dwAddr & FILE_DEVICE_SECURE_OPEN)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_SECURE_OPEN");
ShowDevPropertyInfo(hListView, 0L, "FLOPPY_DISKETTE");
if (dwAddr & FILE_READ_ONLY_DEVICE)
ShowDevPropertyInfo(hListView, 0L, "READ_ONLY_DEVICE");
ShowDevPropertyInfo(hListView, 0L, "REMOVABLE_MEDIA");
if (dwAddr & FILE_WRITE_ONCE_MEDIA)
ShowDevPropertyInfo(hListView, 0L, "WRITE_ONCE_MEDIA");
ShowDevPropertyInfo(hListView, 0L, "REMOTE_DEVICE");
if (dwAddr & FILE_DEVICE_IS_MOUNTED)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_IS_MOUNTED");
ShowDevPropertyInfo(hListView, 0L, "VIRTUAL_VOLUME");
if (dwAddr & FILE_AUTOGENERATED_DEVICE_NAME)
ShowDevPropertyInfo(hListView, 0L, "AUTOGENERATED_DEVICE_NAME");
if (SetupDiGetDeviceRegistryProperty(hDevInfo,
ShowDevPropertyInfo(hListView, "Тип пристрою", 0L);
ShowDevPropertyInfo(hListView, 0L, "DEVICE_BEEP");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_CD_ROM");
if (dwAddr & FILE_DEVICE_CD_ROM_FILE_SYSTEM)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_CD_ROM_FILE_SYSTEM");
if (dwAddr & FILE_DEVICE_CONTROLLER)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_CONTROLLER");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_DATALINK");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_DFS");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_DISK");
if (dwAddr & FILE_DEVICE_DISK_FILE_SYSTEM)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_DISK_FILE_SYSTEM");
if (dwAddr & FILE_DEVICE_FILE_SYSTEM)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_FILE_SYSTEM");
if (dwAddr & FILE_DEVICE_INPORT_PORT)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_INPORT_PORT");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_KEYBOARD");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_MAILSLOT");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_MIDI_IN");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_MIDI_OUT");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_MOUSE");
if (dwAddr & FILE_DEVICE_MULTI_UNC_PROVIDER)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_MULTI_UNC_PROVIDER");
if (dwAddr & FILE_DEVICE_NAMED_PIPE)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_NAMED_PIPE");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_NETWORK");
if (dwAddr & FILE_DEVICE_NETWORK_BROWSER)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_NETWORK_BROWSER");
if (dwAddr & FILE_DEVICE_NETWORK_FILE_SYSTEM)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_NETWORK_FILE_SYSTEM");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_NULL");
if (dwAddr & FILE_DEVICE_PARALLEL_PORT)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_PARALLEL_PORT");
if (dwAddr & FILE_DEVICE_PHYSICAL_NETCARD)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_PHYSICAL_NETCARD");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_PRINTER");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_SCANNER");
if (dwAddr & FILE_DEVICE_SERIAL_MOUSE_PORT)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_SERIAL_MOUSE_PORT");
if (dwAddr & FILE_DEVICE_SERIAL_PORT)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_SERIAL_PORT");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_SCREEN");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_SOUND");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_STREAMS");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_TAPE");
if (dwAddr & FILE_DEVICE_TAPE_FILE_SYSTEM)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_TAPE_FILE_SYSTEM");
if (dwAddr & FILE_DEVICE_TRANSPORT)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_TRANSPORT");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_UNKNOWN");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_VIDEO");
if (dwAddr & FILE_DEVICE_VIRTUAL_DISK)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_VIRTUAL_DISK");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_WAVE_IN");
ShowDevPropertyInfo(hListView, 0L, "DEVICE_WAVE_OUT");
if (dwAddr & FILE_DEVICE_8042_PORT)
ShowDevPropertyInfo(hListView, 0L, "DEVICE_8042_PORT");
if (dwAddr & FILE_DEVICE_NETWORK_REDIRECTOR)
ShowDevPropertyInfo(
Розробка програми "Менеджер пристроїв" курсовая работа. Программирование, компьютеры и кибернетика.
Сочинение По Сказке Стойкий Оловянный Солдатик
Термоэлементы Греко Латинские Дублеты Реферат
Реферат: Социализация детей дошкольного возраста в ДОУ
Ремонт Цифровой Техники Реферат
Реферат: Ринопневмония лошадей
Контрольная работа: Фигурное катание 3
Контрольная Работа По Информатике 8 Класс
Виды Договоров Купли Продажи Курсовая
«Валютная змея». Европейская валютная система. ЭКЮ
Реферат: Функционально-стоимостной анализ систем управления
Реферат: Содержание глутаминовой кислоты в камерной влаге. Скачать бесплатно и без регистрации
Реферат по теме Женщина и политика
Сочинение Поучение Владимира Мономаха
Реферат: Development Of Psychology Essay Research Paper John
Сочинение По Произведению Солнечный Удар
Реферат: Восточные единоборства
Реферат: Геральдика цвета
Реферат по теме Зварювання металів
Совершенствование организации производства зерна на основе внедрения оплаты труда от валового дохода
Шпаргалка: Шпаргалка по Финансовому праву
Unified Modeling Language как унифицированный язык моделирования - Программирование, компьютеры и кибернетика контрольная работа
Методика аудиторской проверки выпуска готовой продукции - Бухгалтерский учет и аудит курсовая работа
Валютная политика России - Международные отношения и мировая экономика курсовая работа


Report Page