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

Создание программы для предоставления информации пользователю о выполняемых приложениях и процессах. Удобный пользовательский интерфейс для быстрого доступа, отображения необходимых данных. Совместимость с операционными системами, в том числе с Windows 7.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 26.07.2014
Размер файла 708,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Министерство образования Республики Беларусь

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Факультет информационных технологий и управления

Кафедра информационных технологий автоматизированных систем

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовому проекту на тему

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

по курсу “Системное программное обеспечение”

Минск 2011

Содержание

  • Введение
  • 1. Техническое задание
  • 2. Решение задачи
  • 2.1 Методы решения и алгоритмы
  • 3. Руководство к использованию
  • 3.1 Создание инсталляционного пакета
  • 3.2 Проверка работоспособности программы
  • Заключение
  • Список использованных источников
  • Приложение
  • Введение
  • Программа Диспетчер задач Windows хорошо знакома не только опытным пользователям компьютера, но и многим новичкам. Именно эта программа приходит на выручку, когда компьютер начинает сильно тормозить или вообще зависает. Если необходимо остановить работу зависшей программы или процесса, которые не реагируют на другие команды или действия, или же компьютер внезапно превращается в горячего финского парня и выполняет все действия по полчаса, программа Диспетчер задач будет первым инструментом спасения.
  • Благодаря программе Диспетчер задач комбинация клавиш <Ctrl+Alt+Del> получила всенародную популярность, поскольку именно данная комбинация клавиш предназначена в Windows XP и предыдущих версиях Windows для вызова данной программы. Учитывая, что некоторые программы могут зависать особенно часто, не удивительно, что комбинация клавиш <Ctrl+Alt+Del> используется повсеместно.
  • В Windows 7 вам придется забыть привычную комбинацию клавиш и запомнить новую -- <Ctrl+Alt+Esc>. Впрочем, старая комбинация клавиш <Ctrl+Alt+Del> все еще в строю, однако в Windows 7 она используется для открытия специального окна, в котором можно выбрать команды для блокирования компьютера, смены пользователя и пароля, выхода из системы и запуска программы Диспетчер Windows. Итак, запомните комбинацию клавиш <Ctrl+Alt+Esc>, поскольку именно с ней придется иметь дело для удаления «зависших» программ и процессов.
  • Окно Диспетчер задач Windows содержит 6 вкладок, каждая из которых представляет полезную информацию.
  • · Вкладка Приложения. Здесь можно найти список запущенных приложений и их состояние.
  • · Вкладка Процессы. Перечислены все программы и процессы, запущенные в системе, -- это основное окно для прекращения работы «зависших» программ или процессов.
  • · Вкладка Службы. Список служб Windows Vista и их состояние (такое как «Работает» или «Остановлено»).
  • · Вкладка Быстродействие. Основная вкладка для оценки производительности операционной системы.
  • · Вкладка Сеть. Отображает объем передаваемых по локальной сети данных.
  • · Вкладка Пользователи. С помощью этой вкладки можно увидеть список всех пользователей, подключенных к вашему компьютеру по локальной сети. В противном случае будет указана только одна учетная запись пользователя.
  • 1. Техническое задание
  • Программа предназначена для предоставления информации пользователю о выполняемых приложениях и процессах, детальной информации по каждому процессу, а также управление процессами и окнами (закрытие процесса, закрытие окна, изменение приоритета процесса). Продумать удобный пользовательский интерфейс для быстрого доступа и отображения необходимых данных. Проверить работоспособность программы на различных операционных системах и добиться возможности её использования на любых операционных системах. Создать инсталляционный пакет программы.
  • 2. Решение задачи
  • Для создания программы использовался язык программирования Delphi (можно использовать C++ Builder, сложностей в переводе не возникнет).
  • Система визуального объектно-ориентированного проектирования Delphi позволяет:
  • 1. Создавать законченные приложения для Windows самой различной направленности.
  • 2. Быстро создавать профессионально выглядящий оконный интерфейс для любых приложений; интерфейс удовлетворяет всем требованиям Windows и автоматически настраивается на ту систему, которая установлена, поскольку использует функции, процедуры и библиотеки Windows.
  • 3. Создавать свои динамически присоединяемые библиотеки компонентов, форм, функций, которые потом можно использовать из других языков программирования.
  • 4. Создавать мощные системы работы с базами данных любых типов.
  • 5. Формировать и печатать сложные отчеты, включающие таблицы, графики и т.п.
  • 6. Создавать справочные системы, как для своих приложений, так и для любых других.
  • 7. Создавать профессиональные программы установки для приложений Windows, учитывающие всю специфику и все требования операционной системы.
  • 2.1 Методы решения и алгоритмы
  • Таблица процессов и окон отображается на двух закладках processes и windows, соответственно. Список процессов и окон выводится посредством элементов ListView. Управление и получение дополнительной информации об окне/процессе осуществляется через контекстное меню PopUpMenu1 и PopUpMenu2 (щелчок правой кнопкой на строке в списке ListView1 или ListView2, соотвественно). пользовательский интерфейс windows
  • Интерфейс программы приведён на рисунке 1
  • Рисунок 1. - Интерфейс программы
  • Основные функции и процедуры проекта:
  • //процедура составления списка процессов
  • procedure ListProcesses;
  • //процедура составления списка окон
  • procedure ListWindows;
  • //процедура составления списка модулей
  • procedure ListModules(OwnerID: Cardinal);
  • //процедура составления списка потоков
  • procedure ListThreads(OwnerID: Cardinal);
  • //процедура составления списка куч (heap)
  • procedure ListHeaps(OwnerID: Cardinal);
  • //процедура составления списка окон для текущего процесса
  • procedure ListThreadWindows;
  • //обработчики событий
  • //создание формы
  • procedure TForm1.FormCreate(Sender: TObject);
  • //выделение элемента списка процессов
  • procedure TForm1.ListView1Click(Sender: TObject);
  • //двойное нажатие процесса
  • procedure TForm1.ListView1DblClick(Sender: TObject);
  • //обработка нажатия кнопок клавиатуры
  • procedure TForm1.ListView1KeyUp(Sender: TObject; var Key: Word;
  • //нажатие пункта "Details" контестного меню
  • procedure TForm1.Details1Click(Sender: TObject);
  • //нажатие пункта "Kill process" контестного меню
  • procedure TForm1.KillProcess1Click(Sender: TObject);
  • //нажатие пункта "Refresh List" контестного меню
  • procedure TForm1.RefreshList1Click(Sender: TObject);
  • //нажатие пункта "Close Window" контестного меню
  • procedure TForm1.CloseWindow1Click(Sender: TObject);
  • //нажатие пункта "Refresh List" контестного меню
  • procedure TForm1.RefreshList2Click(Sender: TObject);
  • //обновление по таймеру информации об использовании ОП
  • procedure TForm1.Timer1Timer(Sender: TObject);
  • //процедуры установки приоритета
  • procedure SetPriority(priority:integer);
  • //установка низкого приоритета
  • procedure TForm1.Idle1Click(Sender: TObject);
  • //установка нормального приоритета
  • procedure TForm1.Normal1Click(Sender: TObject);
  • //установка высокого приоритета
  • procedure TForm1.High1Click(Sender: TObject);
  • //установка приоритета реального времени
  • procedure TForm1.Realtime1Click(Sender: TObject);
  • На рисунке 2 представлена схема работы программы
  • Рисунок 2. - Схема работы диспетчера задач

Рисунок 3. - Диаграмма вариантов использования

3. Руководство к использованию

3.1 Создание инсталляционного пакета

Программа упакована в инсталляционный пакет, который автоматически установит ее. Процесс установки представлен на рисунках 4-6

Рисунок 4. - Выбор языка установки

Можно выбрать два языка установки: английский и русский.

Рисунок 5. - Выбор папки для установки

Рисунок 6. - Процесс установки

3.2 Проверка работоспособности программы

На главном окне программы вы видите две закладки со списками процессов и окон, отображающих различную системную информацию. Выделяя строчку в списке для необходимого окна/процесса можно производить с ним различные действия.

Двойной щелчок мыши на элементе списка, либо выделение его мышкой и нажатие клавиши Enter откроет окно с дополнительной информацией для данного окна/процесса.

Нажатие правой кнопкой мыши на определённом пункте списка выведет контекстное меню, через которое возможно выполнение таких действий, как принудительное обновление списка, закрытие окна/процесса, изменения приоритета процесса.

Проведём проверку работоспособности программы через решение конкретной пользовательской задачи: изменить приоритет любого процесса. На рисунке 7 изображено окно программы, где найден процесс программы PuntoSwitcher. Изменим приоритет на высокий, затем проверим изменение в настоящем диспетчере задач. На рисунке 8 изображен стандартный диспетчер задач Windows, с проверкой приоритета.

Рисунок 7. - Punto.exe

Рисунок 8. - Проверка приоритета

Заключение

Мы видим, что созданная программа функциональна и может выполнять конкретные пользовательские задачи, имеет доступный и функциональный пользовательский интерфейс, полностью совместима со всеми операционными системами, в том числе тестировалась на Windows 7. Создан инсталляционный пакет для установки программы на любом компьютере.

Список использованных источников

1. Delphi 5 в подлиннике. В. Гофман, А. Хомоненко. Санкт-Петербург, 2000 - 800с.

2. Delphi 2005. Секреты программирования. Фленов Михаил. Москва, 2006 - 540с.

3. Самоучитель: основы программирования в Delphi 7. Культин Н.Б. БХВ-Петербург, 2003 - 650с.

Приложение

Модуль SysInfo.

program SysInfo;

uses

Forms,

SysInfoU in 'SysInfoU.pas' {Form1},

AdditU in 'AdditU.pas' {Form2};

{$R *.RES}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.CreateForm(TForm2, Form2);

Application.Run;

end.

Модуль SysInfoU.

unit SysInfoU;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ComCtrls, StdCtrls, Buttons, ImgList, Commctrl, ShellAPI, Menus, ExtCtrls;

type

TForm1 = class(TForm)

PageControl1: TPageControl;

TabSheet2: TTabSheet;

TabSheet1: TTabSheet;

ListView1: TListView;

StatusBar1: TStatusBar;

ListView2: TListView;

ImageList1: TImageList;

PopupMenu1: TPopupMenu;

Details1: TMenuItem;

KillProcess1: TMenuItem;

RefreshList1: TMenuItem;

PopupMenu2: TPopupMenu;

CloseWindow1: TMenuItem;

RefreshList2: TMenuItem;

StatusBar2: TStatusBar;

Timer1: TTimer;

Priority1: TMenuItem;

Idle1: TMenuItem;

Normal1: TMenuItem;

High1: TMenuItem;

Realtime1: TMenuItem;

procedure PageControl1Change(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure ListView1Click(Sender: TObject);

procedure ListView1DblClick(Sender: TObject);

procedure ListView1KeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure Details1Click(Sender: TObject);

procedure KillProcess1Click(Sender: TObject);

procedure RefreshList1Click(Sender: TObject);

procedure CloseWindow1Click(Sender: TObject);

procedure RefreshList2Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure StatusBar1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure Idle1Click(Sender: TObject);

procedure Normal1Click(Sender: TObject);

procedure High1Click(Sender: TObject);

procedure Realtime1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

uses

TlHelp32, AdditU;

//процедура составления списка процессов

procedure ListProcesses;

var

hSnapShot: THandle;

lppe: TProcessEntry32;

hIcon: THandle;

Count: Integer;

//процедура заполнения полей ListView1

procedure _FillList;

begin

with Form1.ListView1.Items.Add, lppe do

begin

//получаем иконку процесса

hIcon:= ExtractIcon(hInstance, lppe.szExeFile, 0);

if hIcon = 0 then

hIcon:= LoadImage(0, IDI_WINLOGO, IMAGE_ICON, LR_DEFAULTSIZE,

LR_DEFAULTSIZE, LR_DEFAULTSIZE or LR_DEFAULTCOLOR or LR_SHARED);

ImageIndex:= ImageList_AddIcon(Form1.ImageList1.Handle, hIcon);

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

Caption:= ExtractFileName(szExeFile);

//ид процесса

SubItems.Add(Format('$%x', [Th32ProcessID]));

//ид родительского процесса

SubItems.Add(Format('$%x', [Th32ParentProcessID]));

//приоритет

case pcPriClassBase of

4: SubItems.Add(Format('%d (Idle)', [pcPriClassBase]));

8: SubItems.Add(Format('%d (Norm)', [pcPriClassBase]));

13: SubItems.Add(Format('%d (High)', [pcPriClassBase]));

24: SubItems.Add(Format('%d (Real)', [pcPriClassBase]));

else

SubItems.Add(Format('%d', [pcPriClassBase]));

end;

//кол-во потоков

SubItems.Add(Format('%d', [cntThreads]));

//загрузка процессора

SubItems.Add(Format('%d', [cntUsage]));

//имя exe файла

SubItems.Add(szExeFile);

end;

inc(Count);

end;

begin

//получаем список процессов

hSnapShot:= CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if hSnapShot<>INVALID_HANDLE_VALUE then

begin

Form1.ListView1.Items.Clear;

lppe.dwSize:= SizeOf(lppe);

Count:= 0;

//проходим данные по каждомуу процессу

if Process32First(hSnapShot, lppe) then _FillList;

while Process32Next(hSnapShot, lppe) do _FillList;

Form1.StatusBar1.Panels[1].Text:= 'Всего: ' + IntToStr(Count);

CloseHandle(hSnapShot);

end

else

MessageBox(Form1.Handle, 'Internal error', 'Error', MB_OK or MB_ICONERROR);

end;

//процедура составления списка окон

procedure ListWindows;

//процедура заполнения полей списка ListView2

function EnumWindowsProc(hWnd: THandle; lParam: Integer): Boolean; stdcall;

var

Text,

PName: string;

hIcon: THandle;

lpdwPID: PDWORD;

i: Integer;

begin

New(lpdwPID);

//получаем пид процесса окна

GetWindowThreadProcessID(hWnd, lpdwPID);

SetLength(Text, 255);

if GetWindowText(hWnd, PChar(Text), 255)<>0 then

with Form1.ListView2.Items.Add, Form1.ListView1 do

begin

//иконку окна

hIcon:= GetClassLong(hWnd, GCL_HICON);

ImageIndex:= ImageList_AddIcon(Form1.ImageList1.Handle, hIcon);

for i:= 0 to Items.Count-1 do

if Cardinal(StrToInt(Items[i].SubItems[0]))=lpdwPID^

then

//получаем имя процесса

PName:= Items[i].Caption;

//заголовок окна

Caption:= Text;

//хэндл окна

SubItems.Add(Format('%d', [hWnd]));

//прописываем пид процесса окна

SubItems.Add(Format('$%x', [lpdwPID^]));

//прописываем имя процесса

SubItems.Add(PName);

Dispose(lpdwPID);

end;

Result:= true;

end;

begin

Form1.ListView2.Items.Clear;

EnumWindows(@EnumWindowsProc, 0);

end;

//процедура составления списка модулей

procedure ListModules(OwnerID: Cardinal);

var

hSnapShot: THandle;

lpme: TModuleEntry32;

//процедура заполнения списка

procedure _FillList;

begin

with Form2.ListView1.Items.Add, lpme do

begin

//получаем имя файла модуля

Caption:= ExtractFileName(szModule);

//прописываем размер модуля

SubItems.Add(Format('%d', [modBaseSize]));

//адрес модуля в ОП

SubItems.Add(Format('$%p', [modBaseAddr]));

//использование модуля

SubItems.Add(Format('%d', [ProccntUsage]));

SubItems.Add(Format('%d', [GlblcntUsage]));

//путь до файла модуля

SubItems.Add(szExePath);

end;

end;

begin

//получаем список модулей

hSnapShot:= CreateToolHelp32Snapshot(TH32CS_SNAPMODULE, OwnerID);

if hSnapShot<>INVALID_HANDLE_VALUE then

begin

Form2.ListView1.Items.Clear;

lpme.dwSize:= SizeOf(lpme);

//проходим каждый модуль

if Module32First(hSnapShot, lpme) then _FillList;

while Module32Next(hSnapShot, lpme) do _FillList;

CloseHandle(hSnapShot);

end

else

MessageBox(Form1.Handle, 'Internal error', 'Error', MB_OK or MB_ICONERROR);

end;

//процедура составления списка потоков

procedure ListThreads(OwnerID: Cardinal);

var

hSnapShot: THandle;

lpte: TThreadEntry32;

//процедура заполнения списка

procedure _FillList;

begin

if lpte.Th32OwnerProcessID =

Cardinal(StrToInt(Form1.ListView1.Selected.SubItems[0])) then

with Form2.ListView2.Items.Add, lpte do

begin

//получаем ид родительского потока

Caption:= Format('$%x', [Th32ThreadID]);

//записываем приоритет

case TpBasePri of

4: SubItems.Add(Format('%d (Idle)', [TpBasePri]));

8: SubItems.Add(Format('%d (Norm)', [TpBasePri]));

13: SubItems.Add(Format('%d (High)', [TpBasePri]));

24: SubItems.Add(Format('%d (Real)', [TpBasePri]));

else

SubItems.Add(Format('%d', [TpBasePri]));

end;

case TpDeltaPri of

-15: SubItems.Add(Format('%d (Idle)', [TpDeltaPri]));

-2: SubItems.Add(Format('%d (Lowest)', [TpDeltaPri]));

-1: SubItems.Add(Format('%d (Low)', [TpDeltaPri]));

0: SubItems.Add(Format('%d (Normal)', [TpDeltaPri]));

1: SubItems.Add(Format('%d (High)', [TpDeltaPri]));

2: SubItems.Add(Format('%d (Highest)', [TpDeltaPri]));

15: SubItems.Add(Format('%d (Time Critical)', [TpDeltaPri]));

else

SubItems.Add(Format('%d', [TpDeltaPri]));

end;

//загрузка процессора

SubItems.Add(Format('%d', [cntUsage]));

end;

end;

begin

//получаем информацию по всем потокам для данного ид родителя

hSnapShot:= CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, OwnerID);

if hSnapShot<>INVALID_HANDLE_VALUE then

begin

Form2.ListView2.Items.Clear;

lpte.dwSize:= SizeOf(lpte);

//проходим все потоки

if Thread32First(hSnapShot, lpte) then _FillList;

while Thread32Next(hSnapShot, lpte) do _FillList;

CloseHandle(hSnapShot);

end

else

MessageBox(Form1.Handle, 'Internal error', 'Error', MB_OK or MB_ICONERROR);

end;

//процедура составления списка куч (heap)

procedure ListHeaps(OwnerID: Cardinal);

var

hSnapShot: THandle;

lphl: THeapList32;

lphe: THeapEntry32;

//процедура заполнения списка

procedure _FillList;

begin

//проходим все кучи для даннного ид родителя

if Heap32First(lphe, lphl.Th32ProcessID, lphl.Th32HeapID) then

repeat

with Form2.ListView3.Items.Add, lphe do

begin

//заголовок

Caption:= Format('$%x', [Th32HeapID]);

//прописываем размер кучи

SubItems.Add(Format('%d', [dwBlockSize]));

//прописываем адрес кучи

SubItems.Add(Format('$%x', [dwAddress]));

//прописываем флаг кучи

case dwFlags of

LF32_FIXED: SubItems.Add('Fixed');

LF32_FREE: SubItems.Add('Free');

LF32_MOVEABLE: SubItems.Add('Moveable')

else SubItems.Add('Unknown');

end;

end

until not Heap32Next(lphe);

end;

begin

try

Form1.Caption:='SysInfo: PROCESSING... PLEASE WAIT';

//получчаем список heap для данного ид родителя

hSnapShot:= CreateToolhelp32Snapshot(TH32CS_SNAPHEAPLIST, OwnerID);

if hSnapShot<>INVALID_HANDLE_VALUE then

begin

Form2.ListView3.Items.Clear;

lphl.dwSize:= SizeOf(lphl);

lphe.dwSize:= SizeOf(lphe);

//проходим все кучи

if Heap32ListFirst(hSnapShot, lphl) then _FillList;

while Heap32ListNext(hSnapShot, lphl) do _FillList;

CloseHandle(hSnapShot);

end

else

MessageBox(Form1.Handle, 'Internal error', 'Error', MB_OK or MB_ICONERROR);

finally

Form1.Caption:= 'SysInfo';

end;

end;

//процедура составления списка окон для текущего процесса

procedure ListThreadWindows;

var

i:integer;

//функция заполнения списка

function EnumThreadWindowsProc(hWnd: THandle; lParam: Integer): Boolean; stdcall;

var

Text: string;

hIcon: THandle;

begin

SetLength(Text, 255);

if GetWindowText(hWnd, PChar(Text), 255)<>0 then

with Form2.ListView4.Items.Add do

begin

//получаем иконку окна

hIcon:= GetClassLong(hWnd, GCL_HICON);

ImageIndex:= ImageList_AddIcon(Form1.ImageList1.Handle, hIcon);

//получаем заголовок окна

Caption:= Text;

//добавляем хендл окна

SubItems.Add(Format('%d', [hWnd]));

// SubItems.Add()

end;

Result:= true;

end;

begin

Form2.ListView4.Items.Clear;

for i:=0 to Form2.ListView2.Items.Count-1 do

EnumThreadWindows(Cardinal(StrToInt(Form2.ListView2.Items[i].Caption)),

@EnumThreadWindowsProc, 0);

end;

//обработчики событий

{---------------------------EVENT HANDLERS--------------------------------}

procedure TForm1.PageControl1Change(Sender: TObject);

begin

//ListProcesses;

end;

//создание формы

procedure TForm1.FormCreate(Sender: TObject);

begin

//обновление списков

ListProcesses;

ListWindows;

Application.Title:='Sys Info';

end;

//выделение элемента списка процессов

procedure TForm1.ListView1Click(Sender: TObject);

begin

//добавляем имя процесса в статусбар

with (Sender as TListView) do

if Selected<>nil

then StatusBar1.Panels[0].Text:=Selected.SubItems[5]

else StatusBar1.Panels[0].Text:='';

end;

//двойное нажатие процесса

procedure TForm1.ListView1DblClick(Sender: TObject);

begin

//вывод доп информации для процесса

Details1Click(self);

end;

//обработка нажатия кнопок клавиатуры

procedure TForm1.ListView1KeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if flag=true then flag:=false

else

begin

if Key=13 then ListView1DblClick(ListView1);

if Key<>0 then ListView1Click(ListView1);

end;

end;

//нажатие пункта "Details" контестного меню

procedure TForm1.Details1Click(Sender: TObject);

begin

with ListView1, Form2 do

if Selected<>nil then

begin

//обновление списков

ListModules(StrToInt(Selected.SubItems[0]));

ListThreads(StrToInt(Selected.SubItems[0]));

ListHeaps(StrToInt(Selected.SubItems[0]));

ListThreadWindows;

Caption:='Details for ' + Selected.Caption;

Show;

end

else

MessageBox(Handle, 'Select a process to see details.',

'Information', MB_OK or MB_ICONINFORMATION);

end;

//нажатие пункта "Kill process" контестного меню

procedure TForm1.KillProcess1Click(Sender: TObject);

var

hProcess: THandle;

S: string;

ID: Cardinal;

begin

if ListView1.Selected<>nil then

begin

//получаем имя процесса

S:=ListView1.Selected.Caption;

//получаем ид процесса

ID:=StrToInt(ListView1.Selected.SubItems[0]);

hProcess:=OpenProcess(PROCESS_ALL_ACCESS, false, ID);

if hProcess<>INVALID_HANDLE_VALUE then

begin

//пытаемся убить процесс

if not TerminateProcess(hProcess, 0)

then MessageBox(0, PChar('Unable to kill process: ' + S),

'Error', MB_ICONWARNING or MB_OK);

CloseHandle(hProcess);

Sleep(500);

ListProcesses;

end;

end

else

MessageBox(Handle, 'Select a process to be killed.', 'Information',

MB_OK or MB_ICONINFORMATION);

end;

//нажатие пункта "Refresh List" контестного меню

procedure TForm1.RefreshList1Click(Sender: TObject);

begin

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

ListProcesses;

end;

//нажатие пункта "Close Window" контестного меню

procedure TForm1.CloseWindow1Click(Sender: TObject);

begin

if ListView2.Selected <> nil then

begin

//отправляем окну сообщения на закрытие

PostMessage(StrToInt(ListView2.Selected.SubItems[0]), WM_CLOSE, 0, 0);

Sleep(500);

ListWindows;

end

else

MessageBox(Handle, 'Select a window to be closed.', 'Information',

MB_OK or MB_ICONINFORMATION);

end;

//нажатие пункта "Refresh List" контестного меню

procedure TForm1.RefreshList2Click(Sender: TObject);

begin

//обновляем список окон

ListWindows;

end;

//обновление по таймеру информации об использовании ОП

procedure TForm1.Timer1Timer(Sender: TObject);

var

MS: TMemoryStatus;

s,ss: string;

begin

GlobalMemoryStatus(MS);

ss:='всего оперативной памяти - '+FormatFloat(' #,###" MB"', MS.dwTotalPhys/1024/1000);

s:=Format('%d %%', [MS.dwMemoryLoad]);

StatusBar2.Panels[0].Text:='Загруженность памяти: '+s+', ('+ss+')';

end;

procedure TForm1.StatusBar1MouseMove(Sender: TObject; Shift: TShiftState;

X, Y: Integer);

begin

if StatusBar1.Panels[0].Text<>''

then StatusBar1.Hint:=StatusBar1.Panels[0].Text

else StatusBar1.Hint:='';

end;

//процедуры установки приоритета

procedure SetPriority(priority:integer);

var

hProcess: THandle;

S: string;

ID: Cardinal;

begin

if Form1.ListView1.Selected<>nil then

begin

//получаем имя процесса

S:=Form1.ListView1.Selected.Caption;

//получаем ид процесса

ID:=StrToInt(Form1.ListView1.Selected.SubItems[0]);

//получаем хэндл процесса

hProcess:=OpenProcess(PROCESS_ALL_ACCESS, false, ID);

if hProcess<>INVALID_HANDLE_VALUE then

begin

//пытаемся установить приоритет

if not SetPriorityClass(hProcess, priority)

then MessageBox(0, PChar('Unable to change priority of process: ' + S),

'Error', MB_ICONWARNING or MB_OK);

//CloseHandle(hProcess);

Sleep(500);

ListProcesses;

end;

end

else

MessageBox(0, 'Select a process to change priority.', 'Information',

MB_OK or MB_ICONINFORMATION);

end;

//установка низкого приоритета

procedure TForm1.Idle1Click(Sender: TObject);

begin

SetPriority(IDLE_PRIORITY_CLASS);

end;

//установка нормального приоритета

procedure TForm1.Normal1Click(Sender: TObject);

begin

SetPriority(NORMAL_PRIORITY_CLASS);

end;

//установка высокого приоритета

procedure TForm1.High1Click(Sender: TObject);

begin

SetPriority(HIGH_PRIORITY_CLASS);

end;

//установка приоритета реального времени

procedure TForm1.Realtime1Click(Sender: TObject);

begin

SetPriority(REALTIME_PRIORITY_CLASS);

end;

end.

Размещено на Allbest.ru

...

Подобные документы

  • Службы Windows — приложения, автоматически включаемые системой при запуске. Характеристика концепции демонов в Unix. Диспетчер автоподключений удаленного доступа, логических дисков, отгрузки, очереди печати. Организация доступа к HID-устройствам.

    контрольная работа [112,7 K], добавлен 01.03.2011

  • Основные выпуски (редакции) операционных систем Windows Vista и Windows Seven, их недостатки и преимущества. История создания, совместимость приложений с операционными системами. Новшества, которые принесла в мир компьютерных технологий каждая из систем.

    реферат [66,3 K], добавлен 17.02.2011

  • Анализ архитектуры ОС Windows 8. Сравнение с предыдущими версиями (интерфейс Modern UI, работа с учетными записями, модель безопасности, диспетчер задач, история файлов, восстановление системы, Storage Spaces). Особенности различных версий Windows 8.

    курсовая работа [289,1 K], добавлен 25.01.2016

  • Разработка программы, которая создает в отдельном потоке случайный массив целых чисел в заданном диапазоне и выводит на экран эти числа. Описание общего алгоритма, интерфейс программы. Методы решения и алгоритмы задач, реализуемых каждым потоком.

    курсовая работа [372,6 K], добавлен 17.04.2014

  • Достоинства и недостатки операционной системы Windows XP: требования к аппаратным средствам, пользовательский интерфейс, рабочий стол, настройка цветов, шрифтов и визуальных эффектов, панели задач и быстродействия. Устойчивость и защита системы.

    курсовая работа [2,6 M], добавлен 23.06.2009

  • Методы, подходы, принципы, интерфейс Lazarus и Delphi. Технические различия, ход установки и коммерческий доступ к продуктам среды визуального программирования. Установление дополнительных компонент программы, их совместимость с операционными системами.

    курсовая работа [4,1 M], добавлен 14.03.2012

  • История развития Windows: покупка лицензии на ОВОS, выпуск версии МS-DOS 1.0, графической оболочки Microsoft Windows 1.0 и поддержка расширенной памяти. Графический пользовательский интерфейс (GUI) и комбинация DOS-Windows. Windows NT и поздние версии.

    реферат [25,1 K], добавлен 13.01.2010

  • Операционная система Windows. Стандартные программы Windows: диспетчер задач, проверка, очистка, дефрагментация, архивация диска, восстановление системы, таблица символов, калькулятор, блокнот, графический редактор - пакет - Paint, WordPad, буфер обмена.

    реферат [17,9 K], добавлен 07.11.2008

  • Десять эвристик Якоба Нильсена. Пример непродуманного и продуманного интерфейса интернет-магазина. Интерфейс с возможностью отката совершенного действия. Принципы эстетичного и минималистичного дизайна сайта. Методы оценки внешнего вида web-странички.

    реферат [4,7 M], добавлен 22.03.2015

  • Создание папки на рабочем столе. Отличия значков ярлыка и файла. Функции монитора, отображение информации о приложениях Windows на рабочем столе. Элементная база ЭВМ третьего поколения. Характеристика операционной системы Windows, свойства информации.

    тест [73,5 K], добавлен 26.12.2011

  • Элементы интерфейса Windows NT. Средства взаимодействия пользователей с системой. Выполнение настройки компьютера. Ярлыки на рабочем столе. Типа окон: приложений, документов и диалоговые окна. Интерфейс администратора сети. Понятие web-браузера.

    презентация [8,8 K], добавлен 23.10.2013

  • Описание общего алгоритма и интерфейса программы. Метод заполнения массива случайными числами. Метод вычисления длины линии между пространственными точками. Создание, синхронизация и завершение потоков. TThread как абстрактный класс, листинг программы.

    курсовая работа [664,0 K], добавлен 08.04.2014

  • Проектирование базы данных Access. Система управления базами данных. Создание и обслуживание базы данных, обеспечение доступа к данным и их обработка. Постановка задач и целей, основных функций, выполняемых базой данных. Основные виды баз данных.

    лабораторная работа [14,4 K], добавлен 16.11.2008

  • Администратор источников данных ODBC: его запуск и принципы работы, возможности эксплуатации и управления. Вкладка "Пользовательское DSN", ее содержание и структура. Библиотеки для доступа к ODBC, типы используемых данных. Функция SQLAllocHandle.

    презентация [485,0 K], добавлен 06.01.2014

  • Операционная система MS-DOS: история и характеристика. Обзор стандартных программ операционной системы Windows. Способы запуска программ. Служебные приложения Windows и их назначение: диспетчер задач, проверка, очистка, дефрагментация и архивация диска.

    реферат [221,4 K], добавлен 06.01.2015

  • Создание системной утилиты, работающей с реестром ОС Windows; структура, функции и роль реестра. Разработка программного обеспечения: интерфейс, структурная схема вызовов окон приложений; реализация и тестирование программы, процедуры; листинг модулей.

    курсовая работа [1,2 M], добавлен 01.06.2013

  • Основные классификации операционных систем. Операционные системы семейства OS/2, UNIX, Linux и Windows. Разграничение прав доступа и многопользовательский режим работы. Пользовательский интерфейс и сетевые операции. Управление оперативной памятью.

    реферат [22,8 K], добавлен 11.05.2011

  • Разработка словаря, содержащего термины по патентоведению, в виде базы данных. Систематизация данных путем разделения текста на отдельные файлы по буквам алфавита. Создание файла "Содержание" с гиперссылками для обеспечения быстрого доступа к информации.

    презентация [278,1 K], добавлен 16.10.2013

  • Применение технических средств компьютера для решения широкого круга задач. Программы для обработки табличных данных. Пользовательский интерфейс и расширение базовых возможностей Ехсеl: формулы и функции, гиперссылки, построение диаграмм и графиков.

    контрольная работа [27,5 K], добавлен 31.08.2010

  • Описание сновных достоинств операционной системы Windows. Удобный графический интерфейс, высокая надежность работы, поддержка широкого спектра современных устройств, богатые возможности персонализации настроек и глубокая интеграция с Интернетом.

    реферат [103,4 K], добавлен 21.10.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.