Автор: Олег Иванов, 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)
{