Автор: Олег Иванов, 28 Сентября 2010 в 11:30, курсовая работа
1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ
1.1 Общие сведения
Наименование системы
Система диспетчеризации процессов.
Плановые сроки начала и окончания работы
Разработка данной системы была начата 20.02.2008 г.
Завершение разработки планируется на 25.04.2008 г.
Порядок оформления работы
1. Обоснование необходимости разработки программы
Постановка задачи.
Сбор исходных материалов.
Выбор и обоснование критериев эффективности и качества разрабатываемой программы.
2. Научно-исследовательские работы
Определение структуры входных и выходных данных.
Предварительный выбор методов решения задач.
Обоснование целесообразности применения ранее разработанных программ.
Определение требований к техническим средствам.
Обоснование принципиальной возможности решения поставленной задачи.
3. Разработка и утверждение технического задания
Определение требований к программе.
Разработка технико-экономического обоснования разработки программы.
Определение стадий, этапов и сроков разработки программы и документации на нее.
Выбор языков программирования.
Согласование и утверждение технического задания.
1.2. Назначение и цели создания системы
1.2.1. Назначение системы
Программный продукт предназначен для отображения списка процессов системы, получения дополнительной информации о процессах и работы с ними.
1.2.2 .Цели создания системы
Программный продукт предназначен для отображения списка запущенных процессов. Программа должна включать в себя средства по завершению процесса, установке приоритета процесса, выключению, перезагрузке и смене профиля компьютера.
1.3. Характеристики объектов систематизации
1.3.1. Краткие сведения об объекте автоматизации
Объектом автоматизации является представление списка процессов, запущенных в системе, в виде удобном для восприятия пользователем и реализация операций над ними.
1.3.2. Сведения об условиях эксплуатации
Данная система проектируется лишь в учебных целях, вследствие чего будет эксплуатироваться узким кругом лиц на домашних персональных компьютерах.
1.4. Требования к системе
в) NORMAL_PRIORITY_CLASS – класс нормальных приоритетов процессов. Обычно процесс имеет данный уровень приоритета;
г) IDLE_PRIORITY_CLASS – класс самых низких приоритетов процессов. Потоки процессов, принадлежащих данному классу приоритетов, вытесняются всеми потоками процессов, имеющих более высокий уровень приоритета, и выполняются только в том случае, если система простаивает;
Входными данными являются процессы, запущенные в системе.
Выходными данными являются процессы, запущенные в системе, и их параметры.
Данный программный продукт представляет собой диспетчер задач. Программа отображает необходимую информацию о процессах (идентификатор процесса, количество запущенных потоков каждым процессом, имя процесса, а также количество памяти, занимаемое процессом), предоставляет функции по завершению процесса, изменяет приоритет процесса, отображает модули, используемые процессом, предоставляет средства по работе с компьютером (выключение, смена профиля, перезагрузка).
Условия выполнения программы, полученной в результате реализации данного проекта, должны отвечать следующим требованиям:
Запуск программы происходит после двойного щелчка кнопкой мыши по иконке приложения. После запуска приложения появится окно
Рисунок 4.1 Главное окно программы
Для завершения процесса необходимо выбрать процесс из списка и нажать кнопку «Завершить процесс».
Для изменения приоритета процесса необходимо выбрать процесс из списка, выбрать новый уровень приоритета и нажать кнопку «Задать приоритет».
Для завершения процесса без получения прав доступа и проверки привилегий необходимо выбрать процесс из списка и нажать кнопку «Выгрузить процесс».
Для того, чтобы отключить текущий профиль необходимо нажать кнопку «Смена профиля».
Для перезагрузки компьютера необходимо нажать кнопку «Перезагрузка компьютера».
Для выключения перезагрузки компьютера необходимо нажать кнопку «Выключение компьютера».
Рисунок
4.2 Сообщение о подтверждении завершения
процесса
Рисунок
4.3 Сообщение о подтверждении перезагрузки
компьютера
Рисунок
4.4 Сообщение о подтверждении выключения
компьютера
Рисунок
4.5 Сообщение о смене профиля
Рисунок 4.6 Сообщение о изменении приоритета процесса
#include <windows.h>
#include <time.h>
#include <string.h>
#include <windowsx.h>
#include <tchar.h>
#include <tlhelp32.h>
#include <stdlib.h>
#include <shellapi.h>
#include <process.h>
# define ID_BUTTON_V_P 3000
# define ID_BUTTON_Z_P 3001
# define ID_BUTTON_O_S 3002
# define ID_BUTTON_KILL 3003
# define ID_BUTTON_TURN_OFF 3004
# define ID_BUTTON_LOG_OFF 3005
# define ID_BUTTON_REBOOT 3006
# define ID_EDIT 2000
# define ID_LIST 1000
# define ID_COMBO 1500
#define TIMER_SEC 1
#define IDC_COUNT 1010
static HWND hCombo,hwndDlg;
static HWND hList;
static HWND hList1;
static HWND hPr;
static HWND hEdit;
int num=0;
int kursor=0;
int x11=950;
int y11=600;
bool par=false;
int ListProcesses(HWND hwnd);
int ProcessesInfo(HWND hwnd,DWORD dwProcessID);
void Terminate(DWORD ID);
void KillProcess(DWORD ID);
void SetListPrioryties(HWND hwnd);
inline BOOL GetDebugPriority(void);
BOOL SetCurrentPrivilege( LPCTSTR Privilege, BOOL bEnablePrivilege );
//////////////////////////////
MEMORYSTATUS ms;
int Count;
int i;
HICON hIcon;
HANDLE h;
STARTUPINFO si={sizeof(si)};
PROCESS_INFORMATION pi;
static DWORD ID;
static DWORD Prior;
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
HINSTANCE hInstance;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static char szAppName[] = "T_M" ;
HWND hwnd ;
MSG msg ;
WNDCLASSEX wndclass ;
wndclass.cbSize = sizeof (wndclass) ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
//wndclass.lpszMenuName = "IDR_MENU1" ;
wndclass.lpszClassName = szAppName ;
wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ;
RegisterClassEx (&wndclass) ;
hwnd = CreateWindow (szAppName, "Task Manager",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
//создание таймера
SetTimer(hwnd,
TIMER_SEC, 10000, NULL);
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
//определение идентификаторов button и edit
static HWND hButton_V_P;
static HWND hButton_Z_P;
static HWND hButton_O_S;
static HWND hButton_KILL;
static HWND hButton_TURN_OFF;
static HWND hButton_LOG_OFF;
static HWND hButton_REBOOT;
HBRUSH hBrush;
char chBuff[3];