Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Кафедра автоматизованих систем управління
Звіт
з предмету
“Системне програмування і операційні системи”
з лабораторної роботи №7
Підготував:
студент групи КН-21
Максимовський Андрій
Перевірила:
Павлюк О.М.
Львів - 2010
Лабораторна робота №7
Тема – Зворотній виклик та функції перебору системних об’єктів.
Мета – Отримати інформацію про систему методом перебору її об’єктів.
Теоретичні відомості
ExitProcess завершує процес і всі його потоки.
VOID ExitProcess
UINT uExitCode / / код виходу для всіх потоків
Функція MessageBox створює, відображає і управляє вікні повідомлення. Вікно повідомлень містить додаток певних повідомлень і назви, а також будь-яку комбінацію зумовлених іконок і натискати кнопки.
Int MessageBox
HWnd HWND, / / дескриптор вікна власника
LPCTSTR lpText, / / адреса тексту у вікні повідомлення
LPCTSTR lpCaption, / / адреса Тема повідомлення вікна
UINT uType / / Стиль вікна повідомлення
EnumWindows перераховує всі вікна верхнього рівня на екрані by прийняття ручки кожного вікна, у свою чергу, до певної додатком функції відгуку. EnumWindows продовжується, поки останнє вікно верхнього рівня не перераховане або БРЕХНЯ function повернень відгуку.
BOOL EnumWindows
WNDENUMPROC lpEnumFunc // покажчик на функцію відгуку
LPARAM lParam // прикладний-визначив значення
GetWindowText копіює текст вказаного заголовок (якщо це має один) вікна вікна в буфері. Якщо вказане вікно - контроль, текст контролю копіюється.
int GetWindowText
HWND hWnd // ручка вікна або управляють з текстом
LPTSTR lpString // адреса буфера для тексту
int nMaxCount // число максимуму символів для копіювання
SendMessage відправляє вказане повідомлення вікну або вікнам. Звернення до функції процедура вікна для вказаного вікна і не повертається, поки процедура вікна не обробила повідомлення. Функція PostMessage, в контрасті, вивішує повідомлення черги повідомлень нитки і повертається негайно.
LRESULT SendMessage
HWND hWnd // ручка вікна призначення
Повідомлення UINT // повідомлення для послання
WPARAM wParam // перший параметр повідомлення
LPARAM lParam // параметр повідомлення помічника
Lstrcmp функція порівнює двох рядків символів. Порівняння залежне від умов.
int lstrcmp
LPCTSTR lpString1 // адреса першого рядка
LPCTSTR lpString2 // адреса дублера
.386
.model flat,STDCALL
extrn ExitProcess:Proc
extrn MessageBoxA:Proc
extrn EnumWindows:Proc
extrn GetWindowTextA:Proc
extrn SendMessageA:proc
extrn lstrcmp:proc
.data
TITLE1 db 'закрити вікно',0
WND_NAME db 200 dup(0)
WM_CLOSE equ 10h
;===============================
.code
Start: push 0 ; додатковий параметр, що передається до CallBack – функції;
push offset PROG1 ; адреса CallBack – функції;
call EnumWindows
STOP: call ExitProcess,0
;================================
PROG1 proc hwnd:DWORD, wparam:DWORD ; CallBack – процедура;
push 200 ; максимальна довжина назви;
push offset WND_NAME ; адреса назви вікна;
push hwnd ; хендл вікна;
call GetWindowTextA ; отримати назву вікна;
or eax,1 ; 1 – шукати далі, 0 – закінчити перебір.
call MessageBoxA,0,offset WND_NAME,offset TITLE1,30h ; вивести назву;
cmp eax,6
jnz M1
call SendMessageA,hwnd,WM_CLOSE,0,0
;mov eax,1
Ret ; Повернутися до процедури EnumWindows.
Endp PROG1
End Start
Висновок: під час лабораторної роботи я навчитися отримувати інформацію про систему методом перебору її об’єктів.