Диспетчер задач
Создание программы для предоставления информации пользователю о выполняемых приложениях и процессах. Удобный пользовательский интерфейс для быстрого доступа, отображения необходимых данных. Совместимость с операционными системами, в том числе с 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