Автор: Олег Иванов, 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. Требования к системе
int i;
i=SendMessage(hwnd,LB_
SendMessage(hwnd,LB_
i=SendMessage(hwnd,LB_
SendMessage(hwnd,LB_
i=SendMessage(hwnd,LB_
SendMessage(hwnd,LB_
i=SendMessage(hwnd,LB_
SendMessage(hwnd,LB_
}
//Завершение процесса
void Terminate(DWORD ID)
{
//Получение прав на завершение
h=OpenProcess(PROCESS_
if(h==INVALID_HANDLE_
MessageBox(NULL,
TEXT("
return;
}
int i=0;
//Завершение
TerminateProcess(h,i);
DWORD
dw=WaitForSingleObject(h,5000)
switch(dw){
case WAIT_OBJECT_0:
MessageBox(
TEXT("
break;
case WAIT_TIMEOUT:
MessageBox(
TEXT("
break;
case WAIT_FAILED:
MessageBox(
TEXT("
break;
}
CloseHandle(h);
}
//Уничтожение процесса
void KillProcess(DWORD ID){
DWORD dwThId;
HANDLE
hProc = OpenProcess(PROCESS_CREATE_
PROCESS_VM_
HANDLE
hTh = CreateRemoteThread(hProc,NULL,
if(!hProc || !hTh){
MessageBox(NULL,
TEXT("!"),0)
return;
}
CONTEXT thcon;
thcon.ContextFlags = CONTEXT_CONTROL;
GetThreadContext(hTh,&
thcon.Eip = 0xffffffff;
SetThreadContext(hTh,&
ResumeThread(hTh);
CloseHandle(hTh);
}
BOOL SetCurrentPrivilege( LPCTSTR Privilege, BOOL bEnablePrivilege )
{
HANDLE hToken;
LUID luid;
TOKEN_PRIVILEGES tp, tpPrevious;
DWORD cbPrevious = sizeof( TOKEN_PRIVILEGES );
BOOL bSuccess = FALSE;
if ( ! LookupPrivilegeValue( NULL, Privilege, &luid ) )
return
FALSE;
if( ! OpenProcessToken( GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken ) )
return
FALSE;
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes
= 0;
AdjustTokenPrivileges(
hToken, FALSE, &tp, sizeof( TOKEN_PRIVILEGES ), &tpPrevious,
&cbPrevious );
if ( GetLastError() == ERROR_SUCCESS )
{
tpPrevious.PrivilegeCount = 1;
tpPrevious.Privileges[0].Luid = luid;
if ( bEnablePrivilege )
tpPrevious.Privileges[0].
else
tpPrevious.Privileges[0].
AdjustTokenPrivileges( hToken, FALSE, &tpPrevious, cbPrevious, NULL,
NULL );
if ( GetLastError() == ERROR_SUCCESS )
bSuccess=TRUE;
}
CloseHandle( hToken
);
return bSuccess;
}