Диспетчер задач. 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 Кб (Скачать)

     Функция LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam). Это оконная функция, обрабатывающая сообщения основного окна программы.  Осуществляется обработка следующих сообщений:

      1. WM_CREATE
    • производится установка таймера;
    • создание основных элементов управления: списков ListBox, кнопок;
      1. WM_COMMAND – обработка сообщений от элементов управления:
    • ID_BUTTON_V_P – нажата кнопка завершения процесса и необходимо завершить процесс, если в окне сообщения, спрашивающем о завершении процесса, была нажата кнопка “Да”. После этого необходимо обновить список, отображающие информацию о процессах;
    • ID_COMBO – при выборе одного из процессов в ListBox, происходит отображение параметров процесса;
    • ID_BUTTON_Z_P – нажата кнопка задания приоритета процесса, необходимо считать из соответствующих ListBox новый приоритет процесса и имя процесса, приоритет которого будет изменен. После этого вызывается процедура изменения приоритета процесса и обновляется список процессов.
    • ID_BUTTON_KILL – осуществляется вызов процедуры принудительного завершения процесса без проверки прав доступа, если в окне сообщения, спрашивающем о завершении процесса, была нажата кнопка “Да”. После этого необходимо обновить список, отображающие информацию о процессах;
    • ID_BUTTON_REBOOT – вызывает процедуру перезагрузки компьютера, которая в свою очередь получает привилегии на перезагрузку компьютера и перезагружает компьютер;
    • ID_BUTTON_TURN_OFF – вызывает процедуру выключения компьютера, которая в свою очередь получает привилегии на выключение компьютера и выключает компьютер;
    • ID_LOG_OUT – вызывает процедуру смены профиля, которая в свою очередь получает привилегии на смену профиля и выключает текущий профиль;
      1. WM_TIMER – производится постоянное обновление полей списка с помощью специальных функций, а также получение количества запущенных процессов и вывод этого количества в текстовое поле;
      1. WM_CLOSE – осуществляется завершение программы;
      2. WM_DESTROY – производится уничтожение главного окна программы;

      3.2.5. Основные используемые фукции.

     Функция int ListProcesses(HWND hwnd); - осуществляет получение списка процессов системы и обновление информации о процессах в ListBox.

      Функция int ProcessesInfo(HWND hwnd,DWORD, dwProcessID); - получает информацию о процессе и о используемых ими модулях, и обновляет информацию в соответствующих ListBox

      Функция void Terminate(DWORD ID); - предназначена завершения выбранного процесса.

      Функция void KillProcess(DWORD ID); - предназначена для завершения процесса с идентификатором ID, без проверки уровня привилегий.

      Функция void SetListPrioryties(HWND hwnd); - предназначена для заполнения ListBox списком приоритетов.

      Функция inline BOOL GetDebugPriority(void); - предназначена для получение приоритета для  работы с процессами.

      Функция BOOL SetCurrentPrivilege( LPCTSTR Privilege, BOOL bEnablePrivilege ); - предназначена для установки уровня привилегий поцессу.

      Функция HWND CreateWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, hInstance, LPVOID lpParam);- используется для создания дочерних окон управления

      Функция LRESULT SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);- используется для передачи сообщений дочерним окнам управления.

      Функция HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT);- используется для подготовки главного окна приложения к началу прорисовки изображения.

      Функция BOOL TextOut(HDC hdc, int nXStart, starting position, int nYStart, lpString, int cbString);- используется для вывода текста в главное окно приложения.

      Функция char *_itoa(int value, char *str, int radix); - используется для преобразования числа в символьного выражения для вывода его в Edit.

      Функция int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType); - предназначена для создания она с сообщением.

      Функция BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReason);- используется для выключения, перезагрузки  и смены профиля компьютера в зависимости от входных параметров.

      Функция LRESULT DefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); - используется для обработки любого сообщения Windows, которое не обрабатывает приложение

    Функция BOOL GetModules(HWND hwndListView,DWORD ID); - предназначена для получения списка модулей, используемых процессом с идентификатором ID.

 

      3.2.6. Основные функции для работы с процессами:

     Функция HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags, DWORD th32ProcessID) – возвращает моментальный снимок процессов, модулей или кучи, в зависимости от флага dwFlags.

     Входные параметры:

     DWORD dwFlags – определяет тип моментального снимка;

     DWORD th32ProcessID – необходим только в случае создания снимка модулей или снимка кучи, указывает идентификатор процесса, для которого будет создаваться моментальный снимок;  

     Функция BOOL WINAPI Process32First (HANDLE hSnapshot,LPPROCESSENTRY32 lppe) – возвращает TRUE, в случае успеха получения информации о первом процессе из снимка процессов и FALSE в обратном случае. Заполняет структуру lppe необходимой информацией о первом процессе из снимка, сделанного функцией CreateToolhelp32Snapshot.

     Входной параметр:

     HANDLE hSnapshot– моментальный снимок, созданный функцией CreateToolhelp32Snapshot с флагом dwFlags установленным в TH32CS_SNAPPROCESS;

     Выходной  параметр:

     LPPROCESSENTRY32 lppe – указатель на структуру, содержащую базовую информацию о процессе; 

     Функция BOOL WINAPI Process32Next (HANDLE hSnapshot,LPPROCESSENTRY32 lppe) – возвращает TRUE, в случае если список процессов, созданный снимком ещё не окончен и FALSE в обратном случае. Заполняет структуру lppe необходимой информацией о процессе. 
 
 

     Входной параметр:

     HANDLE hSnapshot– моментальный снимок, созданный функцией CreateToolhelp32Snapshot с флагом dwFlags установленным в TH32CS_SNAPPROCESS;

     Выходной  параметр:

     LPPROCESSENTRY32 lppe – указатель на структуру, содержащую базовую информацию о процессе; 

     Функция BOOL GetProcessMemoryInfo (HANDLE Process, PPROCESS_MEMORY_COUNTERS ppsmemCounters, DWORD cb) – получает информацию о памяти, используемой процессом, возвращает TRUE, если запрос прошел успешно и FALSE в обратном случае

     Входные параметры:

     HANDLE Process – дескриптор процесса, полученный с помощью функции OpenProcess, у которой входной параметр, отвечающий за флаг доступа к процессу, установлен в значение PROCESS_QUERY_INFORMATION;

     DWORD cb – размер структуры PROCESS_MEMORY_COUNTERS;

     Выходной  параметр:

     PPROCESS_MEMORY_COUNTERS ppsmemCounters– указатель на структуру, содержащую базовую информацию о памяти, используемой процессом с дескриптором Process; 

     Функция HANDLE OpenProcess (DWORD dwDesiredAccess,BOOL bInheritHandle,DWORD dwProcessId) – возвращает дескриптор процесса

     Входные параметры:

     DWORD dwDesiredAccess – флаг доступа к процессу, определяет тип операции, которую потом можно производить с процессом;

     BOOL bInheritHandle – определяет, может ли данный дескриптор быть унаследован, в данной задаче должен быть установлен в FALSE;

     DWORD dwProcessId – идентификатор процесса для определения его дескриптора; 

     Функция BOOL TerminateProcess (HANDLE hProcess, UINT uExitCode) – завершает процесс, определенный дескриптором hProcess

     Входные параметры:

     HANDLE hProcess – дескриптор процесса, полученный с помощью функции OpenProcess, у которой входной параметр, отвечающий за флаг доступа к процессу, установлен в значение PROCESS_TERMINATE;

     UINT uExitCode – определяет код выхода для процесса и всех потоков, запущенных процессом;  

     Функция BOOL WINAPI Module32First (HANDLE hSnapshot, LPMODULEENTRY32 lpme) – возвращает TRUE, в случае успеха получения информации о первом модуле процесса и FALSE в обратном случае. Заполняет структуру lpme необходимой информацией о первом модуле процесса из снимка, сделанного функцией CreateToolhelp32Snapshot, вызванной с флагом dwFlags, равным TH32CS_SNAPMODULE

     Входной параметр:

     HANDLE hSnapshot– моментальный снимок, созданный функцией CreateToolhelp32Snapshot с флагом dwFlags установленным в TH32CS_SNAPMODULE;

     Выходной  параметр:

     LPMODULEENTRY32 lpme – указатель на структуру, содержащую базовую информацию о первом модуле процесса; 

     Функция BOOL WINAPI Module32Next (HANDLE hSnapshot, LPMODULEENTRY32 lpme) – возвращает TRUE, в случае успеха получения информации о модуле процесса и FALSE в обратном случае. Заполняет структуру lpme необходимой информацией модуле процесса из снимка, сделанного функцией CreateToolhelp32Snapshot, вызванной с флагом dwFlags, равным TH32CS_SNAPMODULE.

     Входной параметр:

     HANDLE hSnapshot– моментальный снимок, созданный функцией CreateToolhelp32Snapshot с флагом dwFlags установленным в TH32CS_SNAPMODULE;

     Выходной  параметр:

     LPMODULEENTRY32 lpme – указатель на структуру, содержащую базовую информацию о первом модуле процесса; 

     Функция DWORD GetPriorityClass (HANDLE hProcess)– возвращает приоритет процесса, заданного дескриптором hProcess

     Входной параметр:

     HANDLE hProcess – дескриптор процесса, полученный с помощью функции OpenProcess, у которой входной параметр, отвечающий за флаг доступа к процессу, установлен в значение PROCESS_QUERY_INFORMATION;  

     Функция BOOL SetPriorityClass (HANDLE hProcess, , DWORD dwPriorityClass)– возвращает TRUE, если приоритет процесса hProcess был установлен, и FALSE в обратном случае.

     Входные параметры:

     HANDLE hProcess – дескриптор процесса, полученный с помощью функции OpenProcess, у которой входной параметр, отвечающий за флаг доступа к процессу, установлен в значение PROCESS_SET_INFORMATION;

     DWORD dwPriorityClass – задает класс приоритета для процесса и в общем случае может принимать следующие значения:

             а) REALTIME_PRIORITY_CLASS – класс самых высоких приоритетов процессов. Все потоки, запущенные процессом с данным уровнем приоритета вытесняют все потоки других процессов, в том числе и процессов системы;

             б) HIGH_PRIORITY_CLASS – класс высоких приоритетов  процессов. Потоки процесса с данным уровнем приоритета вытесняют потоки процессов с нормальным и самым низким уровнем приоритета;

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