
- •Передача данных между процессами посредством сообщений
- •Задание
- •Программа работы
- •Использованные компоненты и методы программы “Source”:
- •Листинг программы “Dest” – приёмник сообщений
- •If not r then ShowMessage('Ошибка передачи сообщения.');
- •Использованные компоненты и методы:
- •Результат работы программ
- •Лабораторная работа №2 Создание, запуск и управление процессами в многозадачной ос.
- •Листинг заголовочного файла программы:
- •Листинг исполняемого файла программы:
- •Результат работы программы:
- •Листинг заголовочного файла программы:
- •Листинг исполняемого файла программы:
- •Результат работы программы:
- •Ответы на контрольные вопросы:
- •Лабораторная работа № 4 Синхронизация задач с помощью событий.
- •Программа работы:
- •Листинг заголовочного файла программы “source”:
- •Листинг исполняемого файла программы “source”:
- •Листинг заголовочного файла программы “dest”:
- •Результат работы программы:
- •Результат работы программы:
- •Ответы на контрольные вопросы:
- •Результат работы программы:
- •Ответы на контрольные вопросы:
-
Лабораторная работа № 1
Передача данных между процессами посредством сообщений
Цель работы: ознакомиться и освоить технологию передачи сообщений в среде ОС Windows.
Оборудование: ПЭВМ IBM PC-AT 486 и выше.
Программные средства: ОС Windows (95/98/2000, ME, NT), Delphi 3.* (4.*, 5.*, 6.*), файл справочной документации по функциям API библиотеки WIN32 (win32.hlp).
Задание
Создать программный комплекс, состоящий из двух процессов Windows (приложений), первый из которых является генератором сообщений для второго; второй принимает сообщения от первого и обрабатывает их по заданному алгоритму.
Программа работы
Ознакомиться с технологией передачи сообщений в ОС Windows.
Изучить формат сообщения WM_KEYDOWN.
Ознакомиться с функциями получения описателя окна по его имени (FindWindow()) и отправки сообщений (SendMessage() и PostMessage()).
Ознакомиться с принципами обработки сообщений объектом TApplication.
Написать две программы для обмена данных посредством сообщения WM_KEYDOWN.
Выявить и исправить ошибки, создать удобный интерфейс и расставить по тексту программ комментарии.
Провести испытания и продемонстрировать работу программного комплекса преподавателю.
Листинг программы “Source” – источник сообщений
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TSource = class(TForm)
Button1: TButton;
Label1: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label2: TLabel;
Label3: TLabel;
Image1: TImage;
procedure PoiskDest;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Source: TSource;
Desten: hWnd;
implementation
{$R *.dfm}
procedure TSource.PoiskDest;
begin
Desten:=FindWindow('TDest', 'Dest');
if Desten=0 Then
ShowMessage('Окно-приёмник не найдено! Программа Dest не запущена?');
end;
procedure TSource.Button1Click(Sender: TObject);
var
r: Bool;
wParam, lParam: Integer;
begin
if Desten=0 Then PoiskDest;
Val(Edit1.Text, wParam, wParam);
Val(Edit2.Text, lParam, lParam);
r:=PostMessage(Desten, wm_KeyDown, wParam, lParam);
if not r then ShowMessage('Ошибка передачи сообщения.');
end;
procedure TSource.FormCreate(Sender: TObject);
begin
PoiskDest;
end;
end.
Использованные компоненты и методы программы “Source”:
В данной программе использовались следующие компоненты: кнопка Button1; текстовые метки Label1, Label2, Label3; два однострочных текстовых поля – Edit1 и Edit2. Процедура PoiskDest для поиска программы-приёмника и выдачи сообщения в случае ошибки. Поиск осуществляется при запуске программы и по нажатию кнопки Button1, если программа приёмник не найдена. С помощью кнопки Button1 осуществляется отправка сообщения WM_KEYDOWN программе-приёмнику, при этом параметры wParam и lParam сообщения соответственно равны числам, введённым в поля Edit1 и Edit2.