Разработка программных дополнений по технологии "клиент - сервер". Метод коммуникации - отображение файла в память - Программирование, компьютеры и кибернетика курсовая работа

Разработка программных дополнений по технологии "клиент - сервер". Метод коммуникации - отображение файла в память - Программирование, компьютеры и кибернетика курсовая работа




































Главная

Программирование, компьютеры и кибернетика
Разработка программных дополнений по технологии "клиент - сервер". Метод коммуникации - отображение файла в память

Разработка приложений на платформе Win32 для исследования взаимодействия между процессами через отображение файла в память. Модель приложений "клиент - сервер". Описание алгоритма работы программы-клиента и программы-сервера. Результаты работы приложений.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

По системному программному обеспечению
"Разработка программных дополнений по технологии "клиент - сервер". Метод коммуникации - отображение файла в память"
Пояснительная записка к курсовой работе содержит: ___ с., 9 рис., 3 табл., 2 приложения, 20 источников.
Цель работы: разработка приложений на платформе Win32 для исследования взаимодействия между процессами через отображение файла в память.
Объект разработки - программное обеспечение, в состав которого входят: программа, выполняющая функции сервера и две программы, выполняющие функции клиентов.
В курсовой работе применяются метод проектирования "сверху - вниз" и событийное программирование. Разработка программных приложений выполняется на платформе Win32 в среде Microsoft Visual Studio, с использованием для межпроцессного взаимодействия метода отображения файла в память.
Приложения архитектуры "клиент-сервер" применяются для организации обмена информацией между двумя объектами.
В результате разработки курсового проекта выполнено определение достоинств и недостатков архитектуры "клиент-сервер"; сделан обзор системных средств коммуникации и синхронизации процессов. Разработан менюориентированный пользовательский интерфейс. Выполнена отладка приложения.
WIN32 API, ОТОБРАЖЕНИЕ ФАЙЛА, ПАМЯТЬ, МЬЮТЕКС, БУФЕР, ПРОЦЕССЫ, СОБЫТИЯ, СИНХРОНИЗАЦИЯ ПРОЦЕССОВ, АЛГОРИТМ, ПРОГРАММА.
Если одна машина выйдет из строя, компания все равно сможет продолжать работу
Система предоставляет мощность, позволяющую выполнять работу без монополизации ресурсов. У конечных пользователей достаточно мощностей для локальной работы
Некоторые рабочие станции столь же мощны, как мэйнфреймы, но их стоимость на порядок ниже
Предоставляя вычислительные мощности за меньшие деньги, система позволяет тратить сэкономленные средства на другие приобретения или на увеличение доходов
Аппаратуру, программы и услуги можно приобретать у разных поставщиков
Систему нетрудно модернизировать, как только потребности изменятся
Индивидуальная рабочая среда клиента
Можно объединять компьютерные платформы, подбирая их под конкретные нужды подразделений и пользователей
Отдельные части системы не всегда корректно работают вместе. Бывает трудно найти причину неисправности
Недостаток инструментальных средств обслуживания
При использовании архитектуры клиент-сервер приходится искать инструментальные средства на рынке или разрабатывать их самостоятельно
Философия программирования для Маc или Windows отличается от философии программирования на языке COBOL
Количество байтов, записанных в буфер
Буфер формирования сообщений на экран
Дескриптор мьютекса на доступ к буферу памяти
TCHAR szWindowClass [MAX_LOADSTRING]
Переменная для проверки статуса подключения клиента к серверу
Переменная для размеров полосы меню
Переменная для определения наличия мыши в системе
Переменная для размеров кнопки полосы прокрутки
Процедура отправки сообщения серверу - содержит инструкции, которые позволяют организовать передачу приложением-клиентом подготовленной информации приложению-серверу. Схема алгоритма работы процедуры представлена на рисунке 2.2.1:
Рисунок 2.2.1 - Схема алгоритма процедуры отправки сообщения серверу
Проверка подключения клиента к серверу выполняется блоком 2 (рис. 2.2.1) и оператором 175 приложения Б. В случае отсутствия подключения пользователю выводится сообщение о необходимости установления подключения (блок 3, рис. 2.2.1 и операторы 183-185 приложения Б). В случае установленного подключения выполняется очистка буфера (блок 4, рис. 2.2.1), вызов рабочей функции function_kl (блок 5, рис. 2.2.1) и пересылка сообщения (блоки 6-8, рис. 2.2.1). Эти действия реализованы операторами 176-182 приложения Б.
Функции для подготовки клиентами информации в соответствии с заданием - содержат инструкции для подготовки необходимой информации и имеют похожую структуру. Схема алгоритма функции клиента №1 приведена на рисунке 2.2.2, клиента №2 - на рисунке 2.2.3.
Рисунок 2.2.2 - Схема алгоритма функции function_kl программы-клиента №1
В начале функций выполняется определение длины текста в поле редактирования окна приложения-клиента (блок 2, рис. 2.2.2 и рис. 2.2.3). С помощью функции SendMessage подготовленное сообщение пересылается в буфер szBuf ( блок 3, рис. 2.2.2 и рис. 2.2.3). После символов в конец строки добавляется нулевой код - признак конца строки. С помощью функции sprintf содержимое буфера передается в символьный массив. Эти действия реализованы операторами 28-33 приложения Б для программы-клиента 1 и операторами 227-232 приложения Б для программы-клиента 2.
Далее в клиенте №1 вызывается функция GetSystemMetrics для получения ширины полосы меню (блок 4, рис.2.2.2 и оператор 34 приложения Б). Затем формируется сообщение с полученным значением (блок 5, рис. 2.2.2 и оператор 35 приложения Б). Следующим пунктом выполняется проверка на наличие мыши в системе (блоки 6-7, рис.2.2.2 и операторы 36-37 приложения Б) и формируется соответствующее сообщение (блок 8 или 9, рис. 2.2.2 и операторы 38-40 приложения Б).
Рисунок 2.2.3 - Схема алгоритма функции function_kl программы-клиента №2
В клиенте №2 вызывается функция GetSystemMetrics для получения ширины и высоты кнопки вертикальной полосы прокрутки (блок 4, рис. 2.2.3 и операторы 233-236 приложения Б). Затем формируется сообщение с полученными значениями (блок 5, рис. 2.2.3 и операторы 237-238 приложения Б). Следующим пунктом выполняется определение размеров иконки приложения (блок 6, рис. 2.2.3 и операторы 239-242 приложения Б) и формируется соответствующее сообщение (блок 7, рис. 2.2.3 и оператор 243 приложения Б).
Процедура подключения приложен ия-клиента к приложению-серверу - схема алгоритма представлена на рисунке 2.2.4 В начале блоком 2 (рис. 2.2.4) выполняется проверка установленного подключения (оператор 144 приложения Б). Если подключение не было установлено ранее, производится выполнение следующих функций:
· открытие проекции файла (блок 3, рис. 2.2.4 и операторы 145-148 приложения Б);
· представление проецированного файла (блок 6, рис. 2.2.4 и операторы 157-159 приложения Б);
· создание мьютекса (блок 9, рис. 2.2.4 и оператор 167 приложения Б);
· открытие события с автосбросом, со сброшенным начальным состоянием (блок 13, рис. 2.2.4 и оператор 171 приложения Б).
Оконная процедура программы-клиента - схема алгоритма представлена на рисунке 2.2.5 В начале выполняется анализ кода сообщения (блок 2, рис. 2.2.5 и оператор 127 приложения Б). В зависимости от кода выполняются инструкции, отображенные блоками 3, 7 или 10 (рис. 2.2.5).
При обработке сообщения WM_DESTROY (блок 3) о закрытии окна приложения-клиента особенностью является то, что предварительно необходимо освободить мьютекс, отменить отображение представления файла и закрыть отображение (блоки 3-6, рис. 2.2.5 и операторы 199-204 приложения Б).
При обработке сообщения WM_CREATE ( блок 10) выполняется создание окна приложения-клиента с полем ввода, редактирования и отображения текста (операторы 128-134 приложения Б).
При получении сообщения WM_COMMAND (блок 7) о поступлении команды выполняется ее декодирование и организовывается переключатель для выбора процедуры обработки в зависимости от кода команды (блоки 8 или 9, рис. 2.2.5 и операторы 143-186 приложения Б). Процедура с кодом ID_32771 соответствует процедуре подключения клиента к серверу (рис. 2.2.4), а процедура с кодом ID_32772 - процедуре отправки сообщения серверу (рис. 2.2.1).
Рисунок 2.2.4 - Схема алгоритма процедуры подключения клиента к серверу
Рисунок 2.2.5 - Схема алгоритма оконной процедуры программы-клиента
Дескриптор поля редактирования текста
TCHAR szWindowClass [MAX_LOADSTRING]
Оконная процедура программы- сервера . В начале выполняется анализ кода сообщения (блок 2, рис. 2.3.1 и оператор 120 приложения А). В зависимости от кода выполняются инструкции, отображенные блоками 3 или 4 (рис. 2.3.1).
При обработке сообщения WM_DESTROY (блок 4) о закрытии окна приложения-сервера особенностью является то, что предварительно необходимо завершить выполнение потока, отменить отображение представления файла и закрыть отображение (блоки 4-7, рис. 2.3.1 и операторы 175-180 приложения А).
При обработке сообщения WM_CREATE в начале блоком 3 выполняется создание отображение объекта (операторы 122-128 приложения А). Далее выполняется представление проецированного файла (блок 11, рис. 2.3.1 и операторы 135-137 приложения А). Затем блоком 14 (рис. 2.3.1) выполняется создание мьютекса (реализовано операторами 144-145 приложения А). С помощью блока 18 (рис. 2.3.1) выполняется создание окна приложения-сервера с полем ввода, редактирования и отображения текста (операторы 148-151 приложения А). Задаются необходимые параметры размеров и расположения на экране окна приложения-сервера. Далее блоком 19 (рис. 2.3.1) выполняется создание потока для получения сообщения от приложения-клиента (оператор 153 приложения А).
Рисунок 2.3.1 - Схема алгоритма оконной процедуры программы-сервера
Для отладки программ необходимо размещать и серверную, и клиентскую программы на одном локальном компьютере. Это объясняется тем, что используемый метод отображения файла в память применяется на одном локальном компьютере.
1. Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение: Учебник для вузов - СПб: Питер, 2003. - 736 с. - С.389.
2. Дейтел Х.М., Дейтел П. Дж., Чофнес Д.Р. Операционные системы. Основы и принципы: Третье издание. Пер. с англ. - М.: ООО "Бином-Пресс", 2006. - 1024 с. - С.768.
3. Демройк М.Ю. Начала программирования. Распределенные системы, безопасность схем программирования. - М.: ООО "Бином-Пресс", 2009. - 704 с. - С.143.
4. Джонсон М. Системное программирование в среде Win32, 2-е изд.: Пер. с англ. - M.: Издательский дом "Вильямс”, 2001. - 464 с. - С.346.
6. Питер Блюм, LabVIEW. Стиль программирования, М: "ДМК Пресс", 2008.
7. Рихтер Дж. Windows для профессионалов: создание эффективных Win32 приложений с учетом специфики 64-разрядной версии Windows, 4-е изд.: Пер, англ - СПб: Питер; М.: Издательско-торговый дом "Русская Редакция", 2001. - 752 с. - С.578.
8. Страуструп Б. Язык программирования С++. Специальное издание. Пер. с англ. - М.: ООО "И.Д. Вильямс", 2007. - 1104 с.
9. Суранов А.Я., LabVIEW 8.20., Справочник по функциям, М: "ДМК Пресс", 2007.
10. Таненбаум Э. Современные операционные системы, 2-е изд.: Пер. с англ. - СПб: Питер, 2003. - 1040 с. - С.552.
11. Таненбаум Э. Современные операционные системы, 2-е изд.: Пер. с англ. - СПб: Питер, 2003. - 1040 с.
12. Трахтенгерц Э.А. Программное обеспечение параллельных процессов. - М.: Наука, 2003. - 272 с. - С.84.
13. Трэвис Дж., Кринг Дж., LabVIEW для всех, М: "ДМК Пресс", 2008.
14. Щербаков Є.В., Щербакова М. Є. Мовні засоби системного програмування: навчальний посібник. - Луганськ: Вид-во СНУ ім.В. Даля, 2006. - 376 с.
15. Щербаков Є.В., Щербакова М. Є., Скарга-Бандурова І.С. Діалогові засоби системного програмування: навчальний посібник. - Луганськ: Вид-во СНУ ім.В. Даля, 2010. - 408 с.
16. Эндрюс Грегори Р. Основы многопоточного, параллельного и распределенного программирования. / Пер. с англ. К.: Диалектика, 2008. - 512 с. - С.153.
17. Методические указания к курсовой работе по дисциплине "Системное программное обеспечение - 42 с.
18. http://loi. sscc.ru/gis/oop/win32api/win32.html
19. http://msdn. microsoft.com/ru-ru/library/bb384843. aspx
20. http://w32api. narod.ru/functions/GetSystemMetrics.html
// MapServer. cpp: определяет точку входа для приложения.
LPCSTR nameMutex = "Global\\MapMutex";
LPTSTR nameEvent = "Global\\MapEvent";
HANDLE hServerMutex; // дескриптор мьютекса на доступ к буферу памяти
HINSTANCE hInst; // текущий экземпляр
TCHAR szTitle [MAX_LOADSTRING]; // Текст строки заголовка
TCHAR szWindowClass [MAX_LOADSTRING]; // имя класса главного окна
// Отправить объявления функций, включенных в этот модуль кода:
ATOMMyRegisterClass (HINSTANCE hInstance);
LRESULT CALLBACKWndProc (HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACKAbout (HWND, UINT, WPARAM, LPARAM);
int APIENTRY _tWinMain (HINSTANCE hInstance,
{UNREFERENCED_PARAMETER (hPrevInstance);
UNREFERENCED_PARAMETER (lpCmdLine);
LoadString (hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString (hInstance, IDC_MAPSERVER, szWindowClass, MAX_LOADSTRING);
// Выполнить инициализацию приложения:
if (! InitInstance (hInstance, nCmdShow))
hAccelTable = LoadAccelerators (hInstance, MAKEINTRESOURCE (IDC_MAPSERVER));
while (GetMessage (&msg, NULL, 0, 0))
{if (! TranslateAccelerator (msg. hwnd, hAccelTable, &msg))
// НАЗНАЧЕНИЕ: регистрирует класс окна.
// Эта функция необходима в случае, если нужно, чтобы данный код
// был совместим с системами Win32, не имеющими функции RegisterClassEx'
// которая была добавлена в Windows 95. Вызов этой функции важен для того,
// чтобы приложение получило "качественные" значки и установило связь с ними.
ATOM MyRegisterClass (HINSTANCE hInstance)
wcex. cbSize = sizeof (WNDCLASSEX);
wcex. style= CS_HREDRAW | CS_VREDRAW;
wcex. hIcon= LoadIcon (hInstance, MAKEINTRESOURCE (IDI_MAPSERVER));
wcex. hCursor= LoadCursor (NULL, IDC_ARROW);
wcex. hbrBackground= (HBRUSH) (COLOR_WINDOW+1);
wcex. lpszMenuName= MAKEINTRESOURCE (IDC_MAPSERVER);
wcex. lpszClassName= szWindowClass;
wcex. hIconSm= LoadIcon (wcex. hInstance, MAKEINTRESOURCE (IDI_SMALL));
// ФУНКЦИЯ: InitInstance (HINSTANCE, int)
// НАЗНАЧЕНИЕ: сохраняет обработку экземпляра и создает главное окно.
// В данной функции дескриптор экземпляра сохраняется в глобальной переменной,
а также создается и выводится на экран главное окно программы.
BOOL InitInstance (HINSTANCE hInstance, int nCmdShow)
hInst = hInstance; // Сохранить дескриптор экземпляра в глобальной переменной
hWnd = CreateWindow (szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
unsigned __stdcall VvodThreadFunc (void * arg) // Поток ожидания данных от клиентов
{WaitForSingleObject (hEventVvod, INFINITE); // Ждем своего события
WaitForSingleObject (hServerMutex, INFINITE); // Ждем доступа к памяти
SendMessage (hwndEdit, WM_SETTEXT, 0, (LPARAM) lpD->Buf);
ReleaseMutex (hServerMutex); // Разрешаем записывать в общую память
// ФУНКЦИЯ: WndProc (HWND, UINT, WPARAM, LPARAM)
// НАЗНАЧЕНИЕ: обрабатывает сообщения в главном окне.
// WM_COMMAND - обработка меню приложения
// WM_DESTROY - ввести сообщение о выходе и вернуться.
LRESULT CALLBACK WndProc (HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
INVALID_HANDLE_VALUE, // использование файла подкачки
PAGE_READWRITE, // доступ к чтению/записи
"myFileMapping"); // имя отраженного в памяти объекта
if (hMapFile == NULL || hMapFile == INVALID_HANDLE_VALUE)
"Не может создать отраженный в памяти объект (%d). \n",
lpD= (D*) MapViewOfFile (hMapFile, // дескриптор отраж. в памяти объекта
FILE_MAP_ALL_ACCESS, // разрешение чтения/записи
"Представление проецированного файла не возможно (%d). \n",
hServerMutex = CreateMutexA (NULL, true, nameMutex);
if (hServerMutex == NULL) MessageBox (hWnd, "Error mutex", "Map",MB_OK);
// Создаем событиe с автосбросом, со сброшенным начальным состоянием
hEventVvod = CreateEvent (NULL, FALSE, TRUE, nameEvent);
hwndEdit = CreateWindow (TEXT ("EDIT"), NULL,
WS_CHILD | WS_VISIBLE | WS_VSCROLL |
ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL,
10, 40, 500, 400, hWnd, NULL, hInst, NULL);
hThreads [0] = (HANDLE) _beginthreadex (NULL,0,&VvodThreadFunc,0,0,&uThreadIDs [0]);
DialogBox (hInst, MAKEINTRESOURCE (IDD_ABOUTBOX), hWnd, About);
return DefWindowProc (hWnd, message, wParam, lParam);
// TODO: Add any drawing code here.
return DefWindowProc (hWnd, message, wParam, lParam);
// Обработчик сообщений для окна "О программе".
INT_PTR CALLBACK About (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
if (LOWORD (wParam) == IDOK || LOWORD (wParam) == IDCANCEL)
{EndDialog (hDlg, LOWORD (wParam));
// client_1. cpp: определяет точку входа для приложения.
HINSTANCE hInst; // текущий экземпляр
TCHAR szTitle [MAX_LOADSTRING]; // Текст строки заголовка
TCHAR szWindowClass [MAX_LOADSTRING]; // имя класса главного окна
LPCSTR nameMutex = "Global\\MapMutex";
LPTSTR nameEvent = "Global\\MapEvent";
HANDLE hServerMutex; // дескриптор мьютекса на доступ к буферу памяти
HANDLE hEventVvod; // дескриптор события "Данные готовы"
{ // Определение длины текста в поле редактирования
DWORD cbWritten = SendMessage (hwndEdit,WM_GETTEXTLENGTH,0,0);
SendMessage (hwndEdit, WM_GETTEXT, (WPARAM) cbWritten, (LPARAM) szBuf);
// Отсылаем введенную строку на сервер
sprintf (m_mess, szBuf, strlen (szBuf) + 1,&cbWritten,m_mess);
sprintf (m_mess, "%s\n\r\n",m_mess);
menuW=GetSystemMetrics (SM_CYMENU); // ширина полосы меню в пикселях
sprintf (m_mess, "%s\nШирина полосы меню: %d px\r\n",m_mess,menuW);
fMouse = GetSystemMetrics (SM_MOUSEPRESENT); // наличие мыши в системе
sprintf (m_mess, "%sМышь присутствует в системе. \r\n",m_mess);
sprintf (m_mess, "%sМышь отсутствует в системе. \r\n",m_mess);
// Отправить объявления функций, включенных в этот модуль кода:
ATOMMyRegisterClass (HINSTANCE hInstance);
LRESULT CALLBACKWndProc (HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACKAbout (HWND, UINT, WPARAM, LPARAM);
int APIENTRY _tWinMain (HINSTANCE hInstance,
{UNREFERENCED_PARAMETER (hPrevInstance);
UNREFERENCED_PARAMETER (lpCmdLine);
LoadString (hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString (hInstance, IDC_CLIENT_1, szWindowClass, MAX_LOADSTRING);
// Выполнить инициализацию приложения:
if (! InitInstance (hInstance, nCmdShow))
hAccelTable = LoadAccelerators (hInstance, MAKEINTRESOURCE (IDC_CLIENT_1));
while (GetMessage (&msg, NULL, 0, 0))
{if (! TranslateAccelerator (msg. hwnd, hAccelTable, &msg))
// НАЗНАЧЕНИЕ: регистрирует класс окна.
// Эта функция необходима только в случае, если нужно, чтобы данный
// код был совместим с системами Win32, не имеющими функции RegisterClassEx'
// которая была добавлена в Windows 95. Вызов этой функции важен для того,
// чтобы приложение получило "качественные" значки и установило связь с ними.
ATOM MyRegisterClass (HINSTANCE hInstance)
wcex. cbSize = sizeof (WNDCLASSEX);
wcex. style= CS_HREDRAW | CS_VREDRAW;
wcex. hIcon= LoadIcon (hInstance, MAKEINTRESOURCE (IDI_CLIENT_1));
wcex. hCursor= LoadCursor (NULL, IDC_ARROW);
wcex. hbrBackground= (HBRUSH) (COLOR_WINDOW+1);
wcex. lpszMenuName= MAKEINTRESOURCE (IDC_CLIENT_1);
wcex. lpszClassName= szWindowClass;
wcex. hIconSm= LoadIcon (wcex. hInstance, MAKEINTRESOURCE (IDI_SMALL));
// ФУНКЦИЯ: InitInstance (HINSTANCE, int)
// НАЗНАЧЕНИЕ: сохраняет обработку экземпляра и создает главное окно.
// В данной функции дескриптор экземпляра сохраняется в глобальной переменной,
// а также создается и выводится на экран главное окно программы.
BOOL InitInstance (HINSTANCE hInstance, int nCmdShow)
hInst = hInstance; // Сохранить дескриптор экземпляра в глобальной переменной
hWnd = CreateWindow (szWindowClass, // szTitle,
CW_USEDEFAULT, 0, 400, 250, NULL, NULL, hInstance, NULL);
// ФУНКЦИЯ: WndProc (HWND, UINT, WPARAM, LPARAM)
// НАЗНАЧЕНИЕ: обрабатывает сообщения в главном окне.
// WM_COMMAND - обработка меню приложения
// WM_DESTROY - ввести сообщение о выходе и вернуться.
LRESULT CALLBACK WndProc (HWND hWnd, UINT message,
hwndEdit = CreateWindow ( // Создаем доч. окно для вывода данных от процессов
TEXT ("EDIT"), TEXT ("Клиент #1. Сообщение: \r\n"),
WS_CHILD | WS_VISIBLE | WS_VSCROLL |
ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL,
20, 10, 400, 200, hWnd, NULL, hInst, NULL);
DialogBox (hInst, MAKEINTRESOURCE (IDD_ABOUTBOX), hWnd, About);
case ID_32771: // пункт меню "Подключиться"
FILE_MAP_ALL_ACCESS, // доступ к чтению/записи
"myFileMapping"); // имя "проецируемого " объекта
"Невозможно открыть объект проекция файла",
lpD= (D*) MapViewOfFile (hMapFile, // дескриптор "проец." объекта
FILE_MAP_ALL_ACCESS, // разрешение чтения/записи
"Представление проецированного файла невозможно (%d). \n",
hServerMutex = CreateMutexA (NULL, true, nameMutex);
if (hServerMutex == NULL) MessageBox (hWnd, "Error mutex",
// Откр. событиe с автосбросом, со сброшенным начальным состоянием
hEventVvod = OpenEvent (EVENT_ALL_ACCESS, FALSE, nameEvent);
case ID_32772: // пункт меню "послать сообщение"
{FillMemory (lpD->Buf,1024,0); // очистка буфера
for (int j=0; jРазработка программных дополнений по технологии "клиент - сервер". Метод коммуникации - отображение файла в память курсовая работа. Программирование, компьютеры и кибернетика.
Петр Первый Реформы Реферат
Курсовая работа по теме Проектирование 4-х квартирного индивидуального жилого дома
Заголовок Реферата Образец
Топливная Система Реферат
Контрольная Работа 2 Степень
Эссе Антимонопольные Риски Гарантирующего Поставщика
Реферат: Тропинин Василий Андреевич . Скачать бесплатно и без регистрации
Сочинение по теме Валенсия
План Работы Контрольного Управления
Реферат: Анализ альтернатив, структура управления организацией. Скачать бесплатно и без регистрации
Контрольная Работа Фгос Дошкольного Образования
Лабораторная Работа Биология Пасечник
Курсовая работа по теме Управленческая деятельность руководителя ДОУ
Сочинение На Тему Современный Мир Профессий
Курсовая работа по теме Отпуск на предприятии
Реферат На Тему Що Таке Суржик – Ознака Недосвідченості, Чи Дитя Недбалості?
Реферат На Тему Система Российского Права
Курсовая работа по теме Формы государства в зарубежных странах
Дипломная работа по теме Повышение рентабельности на предприятии
Практическая Работа 5 Химии
Анализ ассортимента верхней меховой одежды, выпускаемой меховым ателье "Арт Сити-495" - Маркетинг, реклама и торговля дипломная работа
УЗИ заболеваний печени - Медицина презентация
Особенности химеотерапии вирусов - Биология и естествознание презентация


Report Page