- •Лабораторна робота №1 Загальні теоретичні відомості:
- •Питання для самоконтролю:
- •Лабораторна робота №2 Системний реєстр Windows
- •Огляд системного реєстру
- •Скарбниця імен
- •Призначений для користувача модуль
- •Системний блок
- •Загальний модуль
- •Ключі конфігурації
- •Конфігураційні файли win.Ini і system.Ini
- •Питання для самоконтролю:
- •Лабораторная работа №3
- •Основы программирования в операционной системе Windows
- •Вызов функций api
- •Структура окна
- •Принципы построения оконных приложений
- •Структура окна
- •Параметры dwExStyle:
- •Параметры dwStyle :
- •12. Функция ExitProcess :
- •17. Функция BeginPaint:
- •Сообщения, посылаемые списку
- •Вопросы для подготовки к сдаче лабораторной работы.
- •Лабораторная работа №4
- •Язык описания ресурсов
- •Пиктограммы
- •Курсоры
- •Акселераторы
- •Api – функции
- •Вопросы для подготовки к сдаче лабораторной работы.
- •Лабораторная работа №5
- •Типы многозадачности
- •Использование многопоточности в приложениях Delphi
- •Синхронизации потоков
- •Критические секции
- •Пример создания многопоточного приложения в Delphi:
- •Лабораторная работа №6 «Специальные объекты синхронизации»
- •Событие (event)
- •Мьютекс (mutex )
- •Семафор (semaphore)
- •Crytical Sections
Конфігураційні файли win.Ini і system.Ini
Набудувати автозапуск програм можна і в системних файлах Windows - system.ini і win.ini. Ці файли використовуються (переважно, використовувалися) в Windows 3.x, 9x, Me для зберігання системних настройок. У Windows NT, 2000, XP аналогічні настройки перенесені в системний реєстр, але старі конфігураційні файли збережені в цілях забезпечення сумісності із старими ж програмами.
Конфігураційні файли win.ini і system.ini розбиті на секції. Назва кожної секції укладена в квадратні дужки, наприклад, [boot] або [windows].
У файлі win.ini рядка запуску програм виглядають так:
Load=<строка запуска>
Run=>строка запуска>
Аналізуючи такі рядки можна зрозуміти, які файли запускаються при старті комп'ютера.
У файлі system.ini є рівно один рядок, через яку найчастіше запускаються віруси, розташована в секції [boot]:
shell=<имя програмної оболонки Windows>
У всіх версіях Windows стандартною програмною оболонкою є explorer.exe. Якщо в рядку shell= вказане щось відмінне від explorer.exe, це з великою вірогідністю шкідлива програма. Справедливості ради, потрібно відзначити, що існують легальні програми, що є альтернативними програмними оболонками Windows. Такі програми можуть змінювати значення параметра shell у файлі system.ini.
Для створення програми можна використати класи TRegistry й TiniFile.
Частина коду, написаного на Delphi, яка вносить корективи до файлів Системного реєстру
procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Edit1.Text:=OpenDialog1.FileName;
ini:=TIniFile.Create(OpenDialog1.FileName);
ComboBox1.Clear;
ini.ReadSections(ComboBox1.Items);
ComboBox1.ItemIndex:=0;
ComboBox1Change(Self);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var reg: TRegistry; key: TStrings; value: string;
i, j: integer;
begin
try
if Edit2.Text = '' then raise
Exception.Create('Вы забыли ввести название ключа реестра!');
try
reg:=TRegistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
for i:=0 to ComboBox1.Items.Count-1 do
begin
if reg.OpenKey('\'+Edit2.Text+'\'+ComboBox1.Items[i], true) then
begin
key:=TStringList.Create;
ini.ReadSection(ComboBox1.Items[i], key);
for j:=0 to key.Count-1 do
begin
value:=ini.ReadString(ComboBox1.Items[i], key[j], '');
reg.WriteString(key[j], value);
end;
key.Free;
end;
end;
ShowMessage('Данные были успешно внесены в реестр.');
finally reg.Free; end;
except raise; end;
end;
Питання для самоконтролю:
Для чого призначений Системний реєстр?
Які існують гілки в реєстрі, за що відповідає кожна з них?
У яких файлах зберігається Системний реєстр?
Що таке ключ реєстру?
У яких файлах містяться відомості про автозавантаження?
Дії, що проводяться з реєстром?
Лабораторная работа №3
Разработка стандартных оконных приложений с простейшими элементами управления под Windows
Основы программирования в операционной системе Windows
Программирование в Windows основывается на использовании функций API (Application Program Interface, интерфейс программного приложения). Их количество достигает двух тысяч. Ваша программ в значительной степени будет состоять из таких вызовов. Все взаимодействие с внешними устройствами и ресурсами операционной системы будет происходит посредством таких функций.
Список функций API и их описание лучше всего брать из файла WIN32.HLP, который поставляется, например с пакетом Borland C++.
Главным элементом программы в среде Windows является окно. Для каждого окна определяется своя процедура обработки сообщения.
Окно может содержать элементы управления: кнопки, списки, окна редактирования и др. Эти элементы, по сути, также являются окнами, но обладающими особыми свойствами. События, происходящие с этими элементами (и самим окном), приводят к приходу сообщений в процедуру окна.
Операционная система Windows использует линейную адресации памяти. Другими словами, всю память можно рассматривать как один сегмент. Для программиста на языке ассемблера это означает, что адрес любой ячейки памяти будет определяться содержимым одного 32-битного регистра, например ЕВХ.
Следствием пункта 5 является то, что мы фактически не ограничены в объеме данных, кода или стека (объеме локальных переменных). Сегменты в тексте программы играют теперь другую роль. Они позволяют задать отдельным фрагментам кода (секциям) определенные свойства: запрет на запись, общий доступ и т.д.
ОС Windows является многозадачной средой. Каждая задача имеет свое адресное пространство и свою очередь сообщений. Более того, даже в рамках одной программы может быть осуществлена многозадачность – любая процедура может быть запущена как самостоятельная задача.