os_kr
.pdfcase 1:
strcpy(srv, "srv1.exe"); break;
case 2:
strcpy(srv, "srv2.exe"); break;
}
ZeroMemory(&si, sizeof(si));
CreateProcess(srv, NULL, NULL, NULL, FALSE, NULL, NULL, NULL, &si,
&pi);
pId = GetPriorityClass(GetCurrentProcess());
tId = GetThreadPriority(GetModuleHandle);
hMs = CreateMailslot("\\\\.\\mailslot\\mtuci", 0, MAILSLOT_WAIT_FOREVER,
NULL);
if(hMs == INVALID_HANDLE_VALUE) return 0;
while(GetMailslotInfo(hMs, NULL, &ns, &mc, NULL))
{
if(mc != 0)
{
ReadFile(hMs, buffer, 400, &nbr, NULL);
CloseHandle(hMs);
}
}
if(LOWORD(wParam) == 2)
{
t = 0;
int j = 1, k;
for(int i = 0; i < 10; i++)
{
k = buffer[74-i] & 0x0f; t = t + (k * j);
j = j * 10;
}
sprintf(buf, "Приоритет серверного процесса: %d\nПриоритет
серверного потока: %d\nДельта приоритетов их потоков: %d", pId, tId, tId-t); strcat(buffer, buf);
}
SetWindowText(hSub, buffer); break;
case WM_DESTROY: PostQuitMessage(0); break;
default:
return DefWindowProc(hWnd, Msg, wParam, lParam);
}
return 0;
}
Руководство пользователя
Для запуска программного комплекса необходимо запустить файл client.exe
На экране появится главное окно программы с двумя кнопками.
При нажатии на кнопку с надписью «Запустить процесс 1» появится окно,
отображающее текущее время и продолжительность сеанса работы Windows. При нажатии на кнопку с надписью «Запустить процесс 2» появится окно, отображающее номера приоритетов открытых программ и номера приоритетов их потоков.
Для корректной работы программного комплекса необходимо разместить файлы серверных процессов srv1.exe и srv2.exe в одном каталоге с файлом клиентского процесса client.exe
Результаты применения программы
Серверное приложение при запуске процесса 1
Клиентское приложение 1
Серверное приложение при запуске процесса 2
Клиентское приложение 2
Заключение
Данная курсовая работа описывает процесс создания клиент-серверных приложений для получения системной информации о текущем времени, о
продолжительности работы Windows, о получаемых приоритетах запущенных процессов и приоритетах их потоков.