
- •1. Теоретична частина
- •1.1 Основи розробки додатків Windows
- •1.2 Головна функція WinMain
- •1.3 Параметри функції WinMain
- •1.4 Склад функції WinMain()
- •2. Практична частина
- •2. Відслідковувати кожен з процесів(його статус, назву, час життя).
- •2.3 Відслідковувати кожен з процесів(його статус, назву, час життя).
- •2.4 Відслідковувати діяльність користувача
- •2.5 Інші функції, використані в програмі
- •2.6 Опис алгоритму роботи програми
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