Операционные системы. Кручинин А.Ю. - 47 стр.

UptoLike

Составители: 

47
Принимающий данные процесс должен обрабатывать сообщение
WM_COPYDATA в главном окне. Данные получаются в виде структуры:
Структура COPYDATASTRUCT
typedef struct tagCOPYDATASTRUCT
{
DWORD dwData;
DWORD cbData;
PVOID lpData;
} COPYDATASTRUCT;
dwData устанавливает до 32 битов данных, которые будут переданы в
принимающую прикладную программу, cbData устанавливает размер, в байтах,
данных, указанных элементом структуры lpData, lpData указывает на данные,
которые будут переданы в принимающую прикладную программу. Этот элемент
структуры может быть значением NULL.
Чтобы послать сообщение из процесса в процесс нужно воспользоваться API-
функцией SendMessage:
Функция SendMessage
LRESULT SendMessage(
HWND hWnd,
UINT message,
WPARAM wParam = 0,
LPARAM lParam = 0
);
Параметры:
hWnd дескриптор окна, которому посылается сообщение.
message определяет сообщение которое будет послано.
wParam определяет дополнительную зависимую от сообщения информацию.
pParam определяет дополнительную зависимую от сообщения информацию.
Возвращаемое значение
Результат обработки сообщения, значение зависит от посланного сообщения.
Для этого необходимо знать HWND окна, в который вы будете посылать
сообщение. Его вы можете получить с помощью функции FindWindowEx.
Задание:
1. Написать программу «Источник данных» со следующими функциями:
запись строки в файл средствами API, блокируя доступ к записи и чтению
файла другими программами;
передача текстовой строки с помощью сообщения WM_COPYDATA
другому приложению.
   Принимающий данные процесс должен обрабатывать сообщение
WM_COPYDATA в главном окне. Данные получаются в виде структуры:
   Структура COPYDATASTRUCT

typedef struct tagCOPYDATASTRUCT
{
       DWORD dwData;
       DWORD cbData;
       PVOID lpData;
} COPYDATASTRUCT;

     dwData – устанавливает до 32 битов данных, которые будут переданы в
принимающую прикладную программу, cbData – устанавливает размер, в байтах,
данных, указанных элементом структуры lpData, lpData – указывает на данные,
которые будут переданы в принимающую прикладную программу. Этот элемент
структуры может быть значением NULL.

     Чтобы послать сообщение из процесса в процесс нужно воспользоваться API-
функцией SendMessage:

     Функция SendMessage

LRESULT SendMessage(
     HWND hWnd,
     UINT message,
     WPARAM wParam = 0,
     LPARAM lParam = 0
);

     Параметры:
hWnd – дескриптор окна, которому посылается сообщение.
message – определяет сообщение которое будет послано.
wParam – определяет дополнительную зависимую от сообщения информацию.
pParam – определяет дополнительную зависимую от сообщения информацию.
     Возвращаемое значение
     Результат обработки сообщения, значение зависит от посланного сообщения.

     Для этого необходимо знать HWND окна, в который вы будете посылать
сообщение. Его вы можете получить с помощью функции FindWindowEx.

Задание:
1. Написать программу «Источник данных» со следующими функциями:
      – запись строки в файл средствами API, блокируя доступ к записи и чтению
файла другими программами;
      – передача текстовой строки с помощью сообщения WM_COPYDATA
другому приложению.

                                                                                 47