- •Лабораторна робота 1 Тема: Процеси і потоки
- •Створення процесу в win32 api
- •Створення потоку в win32 api
- •Лабораторна робота 2 Тема: Планування і взаємодія процесів і потоків
- •1.Дослідити роботу програми.
- •Приклад синхронізації потоків за допомогою об’єкта critical_section
- •3.За завданням викладача розробити власний проект на основі існуючого. Синхронізація потоків, які виконуються в різних процесах за допомогою м’ютекса
- •Лабораторна робота 4 Тема: Керування оперативною пам’яттю
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Ініціалізація і копіювання блоків віртуальної пам’яті
- •Лабораторна робота 3 Тема: Практична реалізація багатопотоковості
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •Лабораторна робота 5 Тема: Файлові системи і операції з файлами і каталогами
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Функції Win32api для файлових операцій
- •Лабораторна робота 6 (ч.1) Тема: Керування пристроями вводу-виводу
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Отримання інформації про перший фізичний диск в системі за допомогою функції DeviceIoControl
- •Лабораторна робота 6 (ч.2) Тема: Створення та використання dll
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого.
- •Створення модальних форм розміщених у dll
- •Лабораторна робота 7 Тема: Взаємодія з користувачем в Windows xp
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Основи створення gui в Win32api
- •Лабораторна робота 8 Тема: Мережні засоби операційних систем
- •3.За завданням викладача розробити власний проект на основі існуючого.
- •Лабораторна робота 9 Тема: Безпека даних в ос
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Додання елементів в список вибіркового керування доступом (dacl) файла або каталога
2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
3.За завданням викладача розробити власний проект на основі існуючого.
Послідовність виконання:
1 Створюємо додаток: File/New/Application
2 Добавте кнопку на форму Form1.
3 Добавляємо нову форму: File/New/Form
4 Добавте кнопку на форму Form2.
5 У файл Unit1.cpp дописуємо код:
#include "Unit2.cpp"
6 У конструктор форми TForm1::TForm1 вставте:
Form2=new TForm2(Application);
7 У реалізацію методу TForm1::Button1Click вставте:
Form2->ShowModal();
8 У реалізацію методу TForm2::Button1Click вставте:
Form2->Close();
9 Зберігаємо усе: File/Save All
10 Компілюємо: Run.
Створення модальних форм розміщених у dll
Послідовність виконання:
1 File/New/Other/DLL Wizard
2 Source Type: C++, Use VCL, Ok
3 Добавляємо нову форму: File/New/Form
4 Добавляємо новий заголовочний файл File/New/Other/Header File і зберігаємо його під іменем Unit1.h, дописуємо у нього код:
extern "C" void __declspec(dllexport)ShowMyForm(void);
5 У файл Unit1.cpp дописуємо код:
#include "Unit1.h"
#include "Unit2.h"
6 Добавляємо у файл Unit1.cpp функцію:
void ShowMyForm(void)
{
Form2 = new TForm2(NULL);
Form2->ShowModal();
delete Form2;
}
7 Зберігаємо усе: File/Save All.
8 Компілюємо: Project/Build Project1.
Створюємо програму, яка динамічно використовує DLL:
9 Створюємо додаток: File/New/Application
10 Добавте кнопку на форму.
11 У розділ private класу форми TForm1 вставте код:
HINSTANCE Dll;
12 У конструктор форми TForm1::TForm1 вставте код:
Dll = NULL;
13 У реалізацію методу TForm1::Button1Click вставте код:
typedef void __declspec(dllimport)SHOWMYFORM(void);
SHOWMYFORM *ShowMyForm;
Dll = LoadLibrary("Project1.dll");
ShowMyForm = (SHOWMYFORM *)GetProcAddress(Dll, "_ShowMyForm");
ShowMyForm();
FreeLibrary(Dll);
14 Зберігаємо: File/Project As... Називаємо модуль Unit3, а проект Project2.
15 Компілюємо: Run.
Створюємо програму, яка статично використовує DLL:
9 Створюємо додаток: File/New/Application
10 Добавте кнопку на форму.
11 Добавте до проекту бібліотеку Project1.lib
12 У файл модуля дописуємо код:
#include "Unit1.h"
13 У реалізацію методу TForm1::Button1Click вставте код:
ShowMyForm();
14 Зберігаємо: File/Project As... Називаємо модуль Unit4, а проект Project3.
15 Компілюємо: Run.
Лабораторна робота 7 Тема: Взаємодія з користувачем в Windows xp
Завдання:
1.Дослідити роботу програми.
2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
3.За завданням викладача розробити власний проект на основі існуючого. Основи створення gui в Win32api
// Hello1.cpp
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
///////////////////////////////////////////////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND hMainWnd;
char szClassName[] = "MyClass";
MSG msg;
WNDCLASSEX wc;
// Заполняем структуру класса окна
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
// Регистрируем класс окна
if (!RegisterClassEx(&wc)) {
MessageBox(NULL, "Cannot register class", "Error", MB_OK);
return 0;
}
// Создаем основное окно приложения
hMainWnd = CreateWindow(
szClassName, "A Hello1 Application", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
(HWND)NULL, (HMENU)NULL,
(HINSTANCE)hInstance, NULL
);
if (!hMainWnd) {
MessageBox(NULL, "Cannot create main window", "Error", MB_OK);
return 0;
}
// Показываем наше окно
ShowWindow(hMainWnd, nCmdShow);
// UpdateWindow(hMainWnd);
// Выполняем цикл обработки сообщений до закрытия приложения
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
///////////////////////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
RECT rect;
switch (msg)
{
case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);
GetClientRect(hWnd, &rect);
DrawText(hDC, "Hello, World!", -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER );
EndPaint(hWnd, &ps);
return 0;
case WM_CLOSE:
DestroyWindow(hWnd);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
}
