Автор: Олег Иванов, 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. Требования к системе
case ID_BUTTON_O_S: 
 
/////////////////////
num=0;
      kursor=SendMessage(
ListProcesses(hCombo);
      SendMessage(hCombo,LB_
SendMessage(hEdit, EM_SETSEL, 0, 6);
char* buf;
buf = new char;
itoa(num,buf,10);
SendMessage (hEdit, EM_REPLACESEL, 0, (LPARAM)buf);
//////////////////////////////
 
      return 0; 
case ID_BUTTON_KILL:
i = SendMessage (hCombo, LB_GETCURSEL, 0, 0) ;
ID = (DWORD)SendMessage (hCombo, LB_GETITEMDATA,
                              
                        if(
                              
                              
 
/////////////////////
num=0;
      kursor=SendMessage(
ListProcesses(hCombo);
      SendMessage(hCombo,LB_
SendMessage(hEdit, EM_SETSEL, 0, 6);
// char* buf;
buf = new char;
itoa(num,buf,10);
SendMessage (hEdit, EM_REPLACESEL, 0, (LPARAM)buf);
//////////////////////////////
return 0;
case ID_BUTTON_TURN_OFF:
      if(MessageBox(hwnd,TEXT(
                              
{
if (!SetCurrentPrivilege( SE_SHUTDOWN_NAME, TRUE ) )
{
::MessageBox(0,"Недостаточно привилегий!","",MB_OK);
    } 
ExitWindowsEx(EWX_POWEROFF,0);
}
      return 0; 
case ID_BUTTON_LOG_OFF:
      if(MessageBox(hwnd,TEXT(
                              
{
if (!SetCurrentPrivilege( SE_SHUTDOWN_NAME, TRUE ) )
{
::MessageBox(0,"Недостаточно привилегий!","",MB_OK);
    } 
ExitWindowsEx(EWX_LOGOFF,0);
}
      return 0; 
case ID_BUTTON_REBOOT:
      if(MessageBox(hwnd,TEXT(
                              
{
if (!SetCurrentPrivilege( SE_SHUTDOWN_NAME, TRUE ) )
{
::MessageBox(0,"Недостаточно привилегий!","",MB_OK);
    } 
ExitWindowsEx(EWX_REBOOT,0);
}
      return 0; 
}
return 0; 
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ; 
}
return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
} 
//Отображение раскрыв. списка процессов
int ListProcesses(HWND hwnd)
{
PROCESSENTRY32 pe32={0};
      HANDLE 
myhandle=
      int i=0; 
SendMessage (hwnd, LB_RESETCONTENT, 0, 0);
      if(myhandle==INVALID_
return false;
      pe32.dwSize=sizeof(
//Поиск процессов в системе
      if(Process32First(
do{
num++;
                  i=
             
SendMessage(hwnd,LB_
}
      while(Process32Next(
//
      SendMessage(hwnd,LB_
      FORWARD_WM_COMMAND(
      i=SendMessage(hwnd,LB_
TCHAR str[100];
//Отображение найденных процессов в списке
    SetDlgItemText(hwndDlg,IDC_
      CloseHandle(myhandle); 
return true;
} 
 
//Получение информации о процессе.
int ProcessesInfo(HWND hwnd,DWORD dwProcessID)
{ 
PROCESSENTRY32 pe32={0};
      HANDLE 
myhandle=
int i=0;
      h=OpenProcess(PROCESS_
DWORD minphmem,maxphmem;
DWORD dw=GetPriorityClass(h);
TCHAR s[20];
      //Отображание 
списка приоритетов  
i=SendMessage (hList, LB_FINDSTRING, 0,(LPARAM) ((LPCTSTR)s));
      SendMessage(hList,LB_
      SendMessage 
(hwnd, LB_RESETCONTENT, 0, 0); 
      if(myhandle==INVALID_
return false;
      pe32.dwSize=sizeof(
      //Поиск 
выбранного процесса и 
      if(Process32First(
do{
                  if(pe32.
}
            while(i++,
 
TCHAR sz[100];
//Отображение информации о процессе в списке
wsprintf(sz,TEXT("Имя: %s"),pe32.szExeFile);
      SendMessage 
(hwnd, LB_ADDSTRING, 0, (LPARAM) sz); 
wsprintf(sz,TEXT("ID процесса: %lu"),pe32.th32ProcessID);
      SendMessage 
(hwnd, LB_ADDSTRING, 0, (LPARAM) sz); 
wsprintf(sz,TEXT("Кол-во потоков: %d"),pe32.cntThreads);
      SendMessage 
(hwnd, LB_ADDSTRING, 0, (LPARAM) sz); 
      wsprintf(sz,TEXT("
SendMessage (hwnd, LB_ADDSTRING, 0, (LPARAM) sz);
      GetProcessWorkingSetSize
      wsprintf(sz,TEXT("Мин/
            ,minphmem,
      SendMessage 
(hwnd, LB_ADDSTRING, 0, (LPARAM) sz); 
      CloseHandle(h); 
      myhandle=
      if(myhandle==INVALID_
return false;
MODULEENTRY32 me32={0};
      me32.dwSize=sizeof(
      if(Module32First(
do{
                  SendMessage (hList1, LB_ADDSTRING, 0, (LPARAM)me32.szExePath); 
            }while(
            CloseHandle(
      return true; 
} 
//Получение 
прав отладчика для 
//приложениях
inline BOOL GetDebugPriority(void)
{
BOOL fOk=FALSE;
HANDLE hToken;
      if(OpenProcessToken(
&hToken)){
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
            LookupPrivilegeVal
            tp.Privileges[0].
            AdjustTokenPrivile
fOk = (GetLastError() == ERROR_SUCCESS);
            CloseHandle(
}
return fOk;
} 
//Отображение элементов списка приоритетов
void SetListPrioryties(HWND hwnd)
{