Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой_дегтяр.docx
Скачиваний:
7
Добавлен:
08.03.2016
Размер:
360.51 Кб
Скачать

2. Практична частина

Завдання: Написати програму, яка дозволяє запускати процеси, використовуючи для цього вибрані на диску файли. Користувач може задавати ім'я запускається файлу і командний рядок. Програма стежить за всіма запущеними нею процесами і виводить на вимогу користувача наступну інформацію: ім'я процесу, значення покажчика та ідентифікатора процесу, час виконання процесу.

2.1 Постановка завдання

Данну програму можна написати, розділивши її на 3 частини:

1. Необхідно запускати процеси, використовуючи для цього вибрані на диску файли.

2. Відслідковувати кожен з процесів(його статус, назву, час життя).

3. Відслідковувати діяльність користувача, і якщо він захотів вивести розгорнуту інформацію про всі процесі замість згорнутої обробити його запит.

Всі частини завдання будуть виконанні на мові WinApi32 з використанням відповідних функцій та методів.

2.2 Запуск процесу, використав для цього вибрані на диску файли.

Найпростіший спосіб дозволити користувачу завантажити файл з будь яким ім’ям це використати стандартний огляд MS Windows з невеликими правками.

Windows надає набір готових стандартних діалогів через бібліотеки Common Dialog Boxes Library (COMDLG32.DLL): діалог відкриття і збереження файлу, діалог друку документа, діалог вибору кольору, шрифту. Щоб створити один з перерахованих діалогів, треба заповнити певну структуру і викликати відповідну функцію з цієї бібліотеки в моєму випадку це:

BOOL WINAPI GetOpenFileName (OPENFILENAME * lpofn) створюють діалог, що відображає вміст того чи іншого каталогу, і дозволяе поставити користувачеві вибрати унікальне ім'я файлу для відкриття.

Синтаксис:

char filename[MAX_PATH]="";

OPENFILENAME of;

of.lStructSize=OPENFILENAME_SIZE_VERSION_400A;

of.hwndOwner=hw;

of.hInstance=h;

of.lpstrFilter="All files (*.*)\0*.*\0";

of.lpstrCustomFilter=NULL;

of.nMaxCustFilter=0;

of.nFilterIndex=1;

of.lpstrFile=filename;

of.nMaxFile=MAX_PATH;

of.lpstrFileTitle=NULL;

of.nMaxFileTitle=0;

of.lpstrInitialDir=NULL; of.Flags=OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY;

if (GetOpenFileName(&of)) {}

char filename[MAX_PATH]

буфер який буде містить ім’я завантаженого файлу.

of.hwndOwner

Це дескриптор родительського вікна.

of.hInstance=h

Дескриптор екземпляра програми.

of.lpstrFilter

Фільтр файлів які будуть доступні для завантаження.

of.lpstrCustomFilter та of.nMaxCustFilter;

Також фільтри але вже для файлів які необхідно декілька разів запустити.

of.nFilterIndex

Загальна кількість використаних файлів.

of.lpstrFile

Адреса буфера виділеного під ім’я файлу.

of.nMaxFile

Розмір буфера виділений під ім’я файлу.

of.lpstrFileTitle

Буфер під рекомендовані заголовки.

of.nMaxFileTitle

Розмір буфера для рекомендованих заголовків.

of.lpstrInitialDir

Стартовий каталог (за замовчанням це поточний каталог)

Рис. 1 Результат використання функції GetOpenFileName