Диспетчер задач. WinAPI

Автор: Олег Иванов, 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. Требования к системе

Работа содержит 1 файл

диспетчер задач.doc

— 905.50 Кб (Скачать)

int list_num;

      char buf1[3],buf2[3],buf3[3];

//LPARAM text1[4]="red";

      int kX, kY; 

static int cxClient, cyClient ;

HDC hdc ;

PAINTSTRUCT ps ;

RECT rect;

switch (iMsg)

{

case WM_SIZE:

cxClient = LOWORD (lParam) ;

cyClient = HIWORD (lParam) ;

//MoveWindow(hCombo,10,40,450-x11+cxClient,100-y11+cyClient,par); 
 

return 0 ; 

case WM_CREATE: 

MoveWindow(hwnd, 10,10,950,600,true); 

      //создание кнопки

hButton_V_P=CreateWindow("button","Завершить процесс",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,300,470,250,40,hwnd,(HMENU)ID_BUTTON_V_P,hInstance,NULL);

hButton_Z_P=CreateWindow("button","Задать приоритет",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,300,420,250,40,hwnd,(HMENU)ID_BUTTON_Z_P,hInstance,NULL);

hButton_O_S=CreateWindow("button","Обновить список",WS_CHILD|BS_DEFPUSHBUTTON,300,420,250,40,hwnd,(HMENU)ID_BUTTON_O_S,hInstance,NULL);

hButton_KILL=CreateWindow("button","Выгрузить процесс",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,300,520,250,40,hwnd,(HMENU)ID_BUTTON_KILL,hInstance,NULL);

hButton_TURN_OFF=CreateWindow("button","Выключение компьютера",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,650,420,250,40,hwnd,(HMENU)ID_BUTTON_TURN_OFF,hInstance,NULL);

hButton_LOG_OFF=CreateWindow("button","Смена профиля",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,650,470,250,40,hwnd,(HMENU)ID_BUTTON_LOG_OFF,hInstance,NULL);

hButton_REBOOT=CreateWindow("button","Перезагрузка компьютера",WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,650,520,250,40,hwnd,(HMENU)ID_BUTTON_REBOOT,hInstance,NULL); 

//создание текстового поля

hEdit=CreateWindow("edit","",WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT,200,470,30,21,hwnd,(HMENU)ID_EDIT,hInstance,NULL); 

//создание listbox

hList=CreateWindow("listbox",NULL,WS_CHILD|WS_VISIBLE|LBS_STANDARD|LBS_WANTKEYBOARDINPUT,500,40,400,100,hwnd,(HMENU)ID_LIST,hInstance,NULL);

hList1=CreateWindow("listbox",NULL,WS_CHILD|WS_VISIBLE|LBS_STANDARD|LBS_WANTKEYBOARDINPUT,500,200,400,180,hwnd,(HMENU)ID_LIST,hInstance,NULL);

hPr=CreateWindow("listbox",NULL,WS_CHILD|WS_VISIBLE|LBS_STANDARD|LBS_WANTKEYBOARDINPUT,10,430,100,20,hwnd,(HMENU)ID_LIST,hInstance,NULL); 

//создание комбо бокса

hCombo=CreateWindow("listbox",NULL,WS_CHILD|WS_VISIBLE|LBS_STANDARD|LBS_WANTKEYBOARDINPUT,10,40,450,350,hwnd,(HMENU)ID_COMBO,hInstance,NULL); 

//SendMessage(hListBox,LB_ADDSTRING,0,(LPARAM) "Вертикальная");

SetListPrioryties(hPr); 

//MoveWindow (hwnd,x,y,x1,y1, true); 

  num=0;

  ListProcesses(hCombo);

  SendMessage(hEdit, EM_SETSEL, 0, 6);

  char* buf;

  buf = new char;

  itoa(num,buf,10);

  SendMessage (hEdit, EM_REPLACESEL, 0, (LPARAM)buf); 

  par=true;

return 0; 
 

//изображение меню

case WM_PAINT:

hdc = BeginPaint (hwnd, &ps) ;

//DeleteObject(hBrush); 

TextOut (hdc,10,20,"Список процессов",16);

TextOut (hdc,10,470,"Количество процессов",20);

TextOut (hdc,500,20,"Параметры процесса",18);

TextOut (hdc,500,170,"Модули процесса",15);

TextOut (hdc,10,410,"Задание приоритета",18);

EndPaint (hwnd, &ps) ;

return 0 ; 

case WM_TIMER:

switch (wParam)

{

case TIMER_SEC:

    num=0;

kursor=SendMessage(hCombo,LB_GETCURSEL, 0, 0);

    ListProcesses(hCombo);

      SendMessage(hCombo,LB_SETCURSEL, kursor, 0);

  SendMessage(hEdit, EM_SETSEL, 0, 6);

  char* buf;

  buf = new char;

  itoa(num,buf,10);

  SendMessage (hEdit, EM_REPLACESEL, 0, (LPARAM)buf);

break;

}

return 0; 
 

case WM_COMMAND: 

switch (LOWORD(wParam))

// нажатие  кнопки 

{case ID_COMBO://Действия при выборе процесса в списке

                        if (HIWORD(wParam)==CBN_SELCHANGE)

                        { 

//////////////////////////информация о процессе/////////////////////

                              i = SendMessage (hCombo, LB_GETCURSEL, 0, 0) ;

                              ID = (DWORD)SendMessage (hCombo, LB_GETITEMDATA,(WPARAM)i, 0) ;

                              //MessageBox(hwnd," ","Error",MB_OK);

                              ProcessesInfo(hList,ID);//Получить информацию

                              //о выбранном  процессе

                        }

                  break; 
 
 

case ID_BUTTON_V_P: 
 

                  i = SendMessage (hCombo, LB_GETCURSEL, 0, 0) ;

                        ID = (DWORD)SendMessage (hCombo, LB_GETITEMDATA, (WPARAM)i, 0) ;

                        if(MessageBox(hwnd,TEXT("Вы уверены"),

                              TEXT("Внимание"),MB_YESNO| MB_ICONWARNING)==IDYES) 

                              Terminate(ID);//Завершение процесса 
 

/////////////////////обновление  информации в списке/////////////////////////

      num=0;

      kursor=SendMessage(hCombo,LB_GETCURSEL, 0, 0);

    ListProcesses(hCombo);

      SendMessage(hCombo,LB_SETCURSEL, kursor, 0);

  SendMessage(hEdit, EM_SETSEL, 0, 6);

 // char* buf;

  buf = new char;

  itoa(num,buf,10);

  SendMessage (hEdit, EM_REPLACESEL, 0, (LPARAM)buf);

////////////////////////////////////////////////////

                        break; 

//MessageBox(hwnd,"Button pressed","Message from button",MB_OK);

return 0; 

case ID_BUTTON_Z_P://задание приоритета процесса 

                i = SendMessage (hCombo, LB_GETCURSEL, 0, 0) ;

                        ID = (DWORD)SendMessage (hCombo, LB_GETITEMDATA,

                              (WPARAM)i, 0) ;

                        i = SendMessage (hPr, LB_GETCURSEL, 0, 0) ;

                        Prior = (DWORD)SendMessage (hPr, LB_GETITEMDATA,

                              (WPARAM)i, 0) ;

                        //Получение  прав на смену приоритета

                        h=OpenProcess(PROCESS_SET_INFORMATION,0,ID); 

                        if(h==INVALID_HANDLE_VALUE){

                              MessageBox(hwnd,TEXT("Ошибка:INVALID_HANDLE_VALUE!"),

                                    TEXT("Error"),MB_OK | MB_ICONERROR);

                        return FALSE;

                        } 

                        if(!SetPriorityClass(h,Prior))

                              MessageBox(hwnd,TEXT("Невозможно установить приоритет!"),

                        TEXT("Error"),MB_OK | MB_ICONERROR);

                        else

                              MessageBox(hwnd,TEXT("Задан новый базовый приоритет!"),

                              TEXT("Внимание"),MB_OK | MB_ICONWARNING);   

                        CloseHandle(h); 
 

/////////////////////обновление  информации в списке/////////////////////////

      num=0;

      kursor=SendMessage(hCombo,LB_GETCURSEL, 0, 0);

    ListProcesses(hCombo);

      SendMessage(hCombo,LB_SETCURSEL, kursor, 0);

  SendMessage(hEdit, EM_SETSEL, 0, 6);

 // char* buf;

  buf = new char;

  itoa(num,buf,10);

  SendMessage (hEdit, EM_REPLACESEL, 0, (LPARAM)buf);

//////////////////////////////////////////////////// 

  //////////////////////////информация о процессе/////////////////////

                              i = SendMessage (hCombo, LB_GETCURSEL, 0, 0) ;

                              ID = (DWORD)SendMessage (hCombo, LB_GETITEMDATA,(WPARAM)i, 0) ;

                              //MessageBox(hwnd," ","Error",MB_OK);

                              ProcessesInfo(hList,ID);//Получить информацию

                              //о выбранном  процессе 

      return 0;

Информация о работе Диспетчер задач. WinAPI