Разработка диспетчера задач

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

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

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

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

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Казанский национальный исследовательский технический университет им. А.Н. Туполева-КАИ»

КУРСОВАЯ РАБОТА

по дисциплине: «Операционные системы»

на тему: «Разработка диспетчера задач»

Работу выполнил студент

III курса 23378 группы

Селютин Д. В.

Работу проверил:

преподаватель

Галиуллин Ильнар Айратович

Набережные Челны - 2013

СОДЕРЖАНИЕ

1. Введение

2. Постановка задачи

3. Структура программы

4. Описание реализации

5. Листинг программы

6. Описание использованных элементов управления

Список литературы

1. ВВЕДЕНИЕ

Диспетчер задач в операционных системах Windows -- утилита для вывода на экран списка запущенных процессов и потребляемых ими ресурсов (в частности статус, процессорное время и потребляемая оперативная память). Также есть возможность некоторой манипуляции процессами.

Его можно вызвать сочетанием клавиш Ctrl+Alt+Del. Диспетчер задач можно также запустить в командной строке, введя имя его исполняемого файла (taskmgr.exe) или выбрав соответствующий пункт в контекстном меню панели задач.

Диспетчер задач -- встроенная в операционную систему утилита. Она содержит вкладки:

- Приложения. Позволяет переключиться в нужное приложение, либо завершить его.

- Процессы. Разнообразные данные обо всех запущенных в системе процессах, можно завершать, менять приоритет, задавать соответствие процессорам (в многопроцессорных системах)

- Службы (начиная с Vista). Сведения обо всех службах Windows.

- Быстродействие. Графики загрузки процессора (процессоров), использования оперативной памяти.

- Сеть (отсутствует в случае отсутствия активных сетевых подключений). - Графики загрузки сетевых подключений.

- Пользователи (только в режиме администратора). Манипулирование активными пользователями.

2. ПОСТАНОВКА ЗАДАЧИ

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

3. СТРУКТУРА ПРОГРАММЫ

Программа написана на языке программирования Delphi 7, что подходит для работы практически во всех средах данного разработчика.

Программа проста в использовании и не требует никаких навыков работы с ней. В программе могут работать как профессиональные, так и не опытные пользователи.

Создаем первую форму, переименовываем ее в «Аналог диспетчера задач» и располагаем на ней следующие элементы управления - 1 PageControl (в данном компоненте создаем 3 вкладки - «Приложения», «Процессы» и «Быстродействие» соответственно; на вкладке «Приложения» располагаем 1 StringGrid и 2 Button; на вкладке «Процессы» располагаем 1 StringGrid и 1 Button; на вкладке «Быстродействие» располагаем 3 GroupBox), 1 StatusBar, 1 MainMenu, 1 Timer, 2 PopupMenu.

Создаем вторую форму, переименовываем ее в «Новая задача» и располагаем на ней следующие элементы управления - 1 Label, 1 ComboBox и 2 Button.

На вкладке «Приложения» кнопки переименовываем в «Новая задача» и «Снять задачу» соответственно, на вкладке «Процессы» кнопку переименовываем в «Завершить».

Главное меню будет состоять из следующих выпадающих блоков - «Файл», «Завершение работы» и «Справка» соответственно. В выпадающем меню «Файл» будет 2 подменю - «Новая задача» и «Выход». В выпадающем меню «Завершение работы» будет 3 подменю - «Смена пользователя», «Перезагрузка» и «Завершить работу» соответственно.

4. ОПИСАНИЕ РЕАЛИЗАЦИИ

В общем виде вкладка «Приложения» диспетчера задач показана на рисунке 1.

Рис. 1. Общий вид вкладки «Приложения»

При нажатии на кнопку «Новая задача» появляется окошко новой задачи:

Пользователю необходимо ввести либо выбрать из списка уже существующую задачу, и она тут же запустится и отобразится в диспетчере.

При нажатии на кнопку «Снять задачу» диспетчер закрывает выбранную задачу.

В общем виде вкладка «Процессы» диспетчера задач показана на рисунке 2.

Рис. 2. Общий вид вкладки «Процессы»

При нажатии на кнопку «Завершить» завершает работу выбранного процесса.

В общем виде вкладка «Быстродействие» диспетчера задач показана на рисунке 3.

Рис. 3. Общий вид вкладки «Быстродействие»

5. ЛИСТИНГ ПРОГРАММЫ

Первая форма:

unit taskkiller;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Controls, Forms,

Dialogs, ComCtrls, TeEngine, ExtCtrls, TeeProcs, StdCtrls,

Menus, tlhelp32, Grids, registry;

type

Tmainform = class(TForm)

PageControl: TPageControl;

appsheet: TTabSheet;

processsheet: TTabSheet;

speedsheet: TTabSheet;

Timer: TTimer;

killappbtn: TButton;

newbtn: TButton;

killprocessbtn: TButton;

status: TStatusBar;

MainMenu: TMainMenu;

filemenu: TMenuItem;

newtaskmenu: TMenuItem;

exitsubmenu: TMenuItem;

popmenuapplist: TPopupMenu;

killappmenuitem: TMenuItem;

popmenuprocesslist1: TPopupMenu;

killprocessmenuitem: TMenuItem;

changeprioritymenuitem: TMenuItem;

All: TGroupBox;

physmemory: TGroupBox;

GroupBox1: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

physmemload: TLabel;

physmemava: TLabel;

physmemall: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

virtmemload: TLabel;

virtmemava: TLabel;

virtmemall: TLabel;

processcount: TLabel;

threadscount: TLabel;

processlist: TStringGrid;

high: TMenuItem;

low: TMenuItem;

normal: TMenuItem;

realtime: TMenuItem;

cpuspeed: TLabel;

cpuspeedc: TLabel;

min: TMenuItem;

max: TMenuItem;

activateform: TMenuItem;

Bevel1: TBevel;

gotoprocesslist: TMenuItem;

norm: TMenuItem;

endworkmenu: TMenuItem;

rebootmenu: TMenuItem;

shutdownmenu: TMenuItem;

aboutmenu: TMenuItem;

aboutprogrammenu: TMenuItem;

userchangemenu: TMenuItem;

applist: TStringGrid;

procedure FormCreate(Sender: TObject);

procedure exitsubmenuClick(Sender: TObject);

procedure killprocessbtnClick(Sender: TObject);

procedure killprocessmenuitemClick(Sender: TObject);

procedure highClick(Sender: TObject);

procedure lowClick(Sender: TObject);

procedure normalClick(Sender: TObject);

procedure realtimeClick(Sender: TObject);

procedure TimerTimer(Sender: TObject);

procedure popmenuprocesslist1Popup(Sender: TObject);

procedure killappbtnClick(Sender: TObject);

procedure killappmenuitemClick(Sender: TObject);

procedure gotoprocesslistClick(Sender: TObject);

procedure popmenuapplistPopup(Sender: TObject);

procedure minClick(Sender: TObject);

procedure normClick(Sender: TObject);

procedure maxClick(Sender: TObject);

procedure activateformClick(Sender: TObject);

procedure newbtnClick(Sender: TObject);

procedure aboutprogrammenuClick(Sender: TObject);

procedure newtaskmenuClick(Sender: TObject);

procedure rebootmenuClick(Sender: TObject);

procedure shutdownmenuClick(Sender: TObject);

procedure userchangemenuClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

function EnablePrivilege(const Value: Boolean; privilegename:string): Boolean;

procedure processinfotogrid(procinfogrid:TStringGrid);

function getpriority(id:THandle):string;

function killproc(id:THandle):boolean;

procedure setpriority(id:THandle;prclass:Cardinal);

function ThrCount(procinfogrid:TStringGrid):word;

procedure CurrentInfo;

function CurrentProcessorSpeed:string;

function OfficialCPUSpeed:string;

procedure MemInfo;

procedure AppInfoToGrid(grid:TStringGrid);

function killtaskfunc:boolean;

procedure WindowNotWorking(grid:TStringGrid);

end;

var

mainform: Tmainform;

implementation

uses Cmd;

{$R *.dfm}

function TMainForm.EnablePrivilege(const Value: Boolean; privilegename:string): Boolean;

var

hToken: THandle;

tp: TOKEN_PRIVILEGES;

d: DWORD;

begin

Result := False;

if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken) then

begin

tp.PrivilegeCount := 1;

LookupPrivilegeValue(nil, pchar(privilegename), tp.Privileges[0].Luid);

if Value then

tp.Privileges[0].Attributes := $00000002

else

tp.Privileges[0].Attributes := $80000000;

AdjustTokenPrivileges(hToken, False, tp, SizeOf(TOKEN_PRIVILEGES), nil, d);

if GetLastError = ERROR_SUCCESS then

begin

Result := True;

end;

CloseHandle(hToken);

end;

end;

procedure TMainForm.WindowNotWorking(grid:TStringGrid);

var i:word;

res:dword;

begin

for i:=1 to grid.RowCount-1 do

if SendMessageTimeOut(strtoint(applist.Cells[1,i]),WM_NULL,0,0,SMTO_NORMAL or SMTO_ABORTIFHUNG,50, res)=1 then grid.Cells[2,i]:='Работает' else grid.Cells[2,i]:='Не отвечает';

end;

function TMainForm.OfficialCPUSpeed:string;

var reg:TRegistry;

begin

reg:=tregistry.Create;

reg.RootKey:=HKEY_LOCAL_MACHINE;

reg.OpenKey('hardware\description\system\centralprocessor\0',false);

OfficialCPUSpeed:=inttostr(reg.readinteger('~mhz'))+' Mhz';

reg.CloseKey;

reg.Destroy;

end;

function TMainForm.CurrentProcessorSpeed:string;

var TimerHi, TimerLo: DWORD;

Res:double;

PriorityClass, Priority: integer;

begin

application.ProcessMessages ;

PriorityClass := GetPriorityClass(GetCurrentProcess);

Priority := GetThreadPriority(GetCurrentThread);

SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);

SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);

Sleep(10);

asm

dw 310Fh // rdtsc

mov TimerLo, eax

mov TimerHi, edx

end;

Sleep(500);

asm

dw 310Fh // rdtsc

sub eax, TimerLo

sbb edx, TimerHi

mov TimerLo, eax

mov TimerHi, edx

end;

SetThreadPriority(GetCurrentThread, Priority);

SetPriorityClass(GetCurrentProcess, PriorityClass);

Res := TimerLo / (1000.0 * 500);

CurrentProcessorSpeed:= Format(' %f MHz', [res]);

end;

procedure TMainForm.MemInfo;

var memstat:tmemorystatus;

begin

MemStat.dwLength := SizeOf(MemStat);

GlobalMemoryStatus(MemStat);

with MemStat do begin

physmemload.Caption :=Format('%0.3f ',[(dwTotalPhys-dwAvailPhys) div 1024 /1024]);

physmemall.Caption := Format('%0.3f ',[dwTotalPhys div 1024 / 1024]);

physmemava.Caption := Format('%0.3f ',[dwAvailPhys div 1024 / 1024]);

virtmemall.Caption := Format('%0.3f ',[dwTotalPageFile div 1024 / 1024]);

virtmemava.Caption := Format('%0.3f ',[dwAvailPageFile div 1024 / 1024]);

virtmemload.Caption:= Format('%0.3f ',[(dwTotalPageFile-dwAvailPageFile) div 1024 /1024]);

end;

end;

Function TMainForm.getpriority(id:THandle):string;

var hproc:THandle;

priority:cardinal;

h:byte;

begin

h:=0;

hproc:=OpenProcess(PROCESS_ALL_ACCESS,false,id);

priority:=GetPriorityClass(hproc);

if priority=IDLE_PRIORITY_CLASS then begin h:=1; getpriority:='Низкий';end;

if priority=NORMAL_PRIORITY_CLASS then begin h:=1; getpriority:='Средний';end;

if priority=HIGH_PRIORITY_CLASS then begin h:=1; getpriority:='Высокий';end;

if priority=REALTIME_PRIORITY_CLASS then begin h:=1;getpriority:='Абсолютный';end;

if h<>1 then getpriority:='Средний';

CloseHandle(hproc);

end;

procedure TMainForm.processinfotogrid(procinfogrid:TStringGrid);

var hsnap: Thandle;

procentry: TProcessEntry32;

k:byte;

begin

k:=1;

hsnap:=CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS,0);

procentry.dwSize:=sizeof(procentry);

Process32First(hsnap,procentry);

repeat

with procinfogrid do

begin

if k>rowcount-1 then

rowcount:=rowcount+1;

cells[0,k]:=procentry.szexefile;

cells[1,k]:=inttostr(procentry.th32ProcessID);

cells[2,k]:=inttostr(procentry.cntThreads);

cells[3,k]:=GetPriority(procentry.th32processid);

end;

k:=k+1;

until Process32Next(hsnap,procentry)<>true;

if k<procinfogrid.RowCount then procinfogrid.RowCount:=k;

CloseHandle(hsnap);

end;

function TMainForm.killproc(id:THandle):boolean;

var hproc:THandle;

ok:boolean;

begin

hproc:=OpenProcess(PROCESS_ALL_ACCESS,false,id);

ok:=TerminateProcess(hproc,0);

if ok=false then killproc:=false else killproc:=true;

CloseHandle(hproc);

end;

procedure TMainForm.setpriority(id:THandle;prclass:Cardinal);

var hproc:THANDLE;

begin

hproc:=OpenProcess(PROCESS_ALL_ACCESS,false,id);

SetPriorityClass(hproc,prclass);

CloseHandle(hproc);

end;

function TMainForm.ThrCount(procinfogrid:TStringGrid):word;

var k:word;

i:byte;

begin

k:=0;

for i:=1 to procinfogrid.RowCount-1 do

k:=k+strtoint(procinfogrid.cells[2,i]);

thrcount:=k;

end;

procedure TMainForm.CurrentInfo;

begin

application.ProcessMessages;

processinfotogrid(processlist);

AppInfoToGrid(applist);

processcount.caption:=inttostr(processlist.rowcount-1);

threadscount.Caption:=inttostr(thrcount(processlist));

status.Panels.Items[0].Text:='Процессов: '+processcount.caption;

status.Panels[1].Text:='Частота ЦП: '+cpuspeedc.Caption;

cpuspeedc.Caption:=' '+OfficialCPUSpeed;

meminfo;

status.Panels[2].Text:='Выделение памяти: '+physmemload.caption+'Мб';

WindowNotWorking(applist);

end;

function AddWinInfo(WinHandle: HWnd; list:TStringList): Boolean;

stdcall;

var WinCaption: array[0..255] of Char;

begin

Result:=True;

if isWindowVisible(WinHandle) then

if GetWindow(WinHandle,GW_OWNER)=0 then

begin

GetWindowText(WinHandle,WinCaption,SizeOf(WinCaption));

if (WinCaption<>'') then

List.Add(inttostr(WinHandle));

end;

end;

procedure TMainForm.AppInfoToGrid(grid:TStringGrid);

var descript:TStringList;

WinCaption:array[0..255] of char;

i:word;

begin

descript:=TStringList.Create;

with descript do

begin

Clear;

EnumWindows(@AddWinInfo,LParam(descript));

end;

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

begin

if i+1>grid.RowCount-1 then grid.RowCount:=grid.RowCount+1;

GetWindowText(strtoint(descript.strings[i]),WinCaption,SizeOf(WinCaption));

grid.Cells[0,i+1]:=WinCaption;

grid.Cells[1,i+1]:=descript.strings[i];

end;

if grid.RowCount>i+1 then grid.RowCount:=i+1;

descript.Destroy;

end;

function TMainForm.killtaskfunc:boolean;

var hproc:THandle;

id:Cardinal;

begin

GetWindowThreadProcessId(strtoint(applist.Cells[1,applist.row]),id);

hproc:=OpenProcess(PROCESS_ALL_ACCESS,false,id);

if TerminateProcess(hproc,0) then Result:=true else Result:=false;

applist.RowCount:=applist.RowCount-1;

closehandle(hproc);

end;

procedure Tmainform.FormCreate(Sender: TObject);

begin

EnablePrivilege(true,'SeDebugPrivilege');

EnablePrivilege(true,'SeShutdownPrivilege');

pagecontrol.ActivePageIndex:=0;

with applist do

begin

cells[0,0]:='Задача';

cells[1,0]:='ID';

cells[2,0]:='Состояние'

end;

with processlist do

begin

cells[0,0]:='Процесс';

cells[1,0]:='PID';

cells[2,0]:='Кол-во потоков';

cells[3,0]:='Приоритет';

end;

CurrentInfo;

end;

procedure Tmainform.exitsubmenuClick(Sender: TObject);

begin

application.Terminate;

end;

procedure Tmainform.killprocessbtnClick(Sender: TObject);

var ok:boolean;

begin

ok:=killproc(strtoint(processlist.Cells[1,processlist.Row]));

if ok=false then MessageBox(mainform.Handle,'Невозможно завершение данного процесса','Ошибка',MB_OK);

processlist.RowCount:=processlist.RowCount-1;

end;

procedure Tmainform.killprocessmenuitemClick(Sender: TObject);

var ok:boolean;

begin

ok:=killproc(strtoint(processlist.Cells[1,processlist.Row]));

if ok=false then MessageBox(mainform.Handle,'Невозможно завершение данного процесса','Ошибка',MB_OK);

processlist.RowCount:=processlist.RowCount-1;

end;

procedure Tmainform.highClick(Sender: TObject);

begin

setpriority(strtoint(processlist.Cells[1,processlist.row]),HIGH_PRIORITY_CLASS);

end;

procedure Tmainform.lowClick(Sender: TObject);

begin

setpriority(strtoint(processlist.Cells[1,processlist.row]),IDLE_PRIORITY_CLASS);

end;

procedure Tmainform.normalClick(Sender: TObject);

begin

setpriority(strtoint(processlist.Cells[1,processlist.row]),NORMAL_PRIORITY_CLASS);

end;

procedure Tmainform.realtimeClick(Sender: TObject);

begin

setpriority(strtoint(processlist.Cells[1,processlist.row]),REALTIME_PRIORITY_CLASS);

end;

procedure Tmainform.TimerTimer(Sender: TObject);

begin

processinfotogrid(processlist);

CurrentInfo;

end;

procedure Tmainform.popmenuprocesslist1Popup(Sender: TObject);

begin

high.Checked:=false;

low.Checked:=false;

normal.Checked:=false;

realtime.Checked:=false;

if processlist.Cells[3,processlist.Row]='Средний' then normal.Checked:=true;

if processlist.Cells[3,processlist.Row]='Высокий' then high.Checked:=true;

if processlist.Cells[3,processlist.Row]='Низкий' then low.Checked:=true;

if processlist.Cells[3,processlist.Row]='Абсолютный' then realtime.Checked:=true;

end;

procedure Tmainform.killappbtnClick(Sender: TObject);

begin

if killtaskfunc=false then MessageBox(mainform.Handle,'Не возможно снять задачу!','Ошибка',0);

end;

procedure Tmainform.killappmenuitemClick(Sender: TObject);

begin

if killtaskfunc=false then MessageBox(mainform.Handle,'Не возможно снять задачу!','Ошибка',0);

end;

procedure Tmainform.gotoprocesslistClick(Sender: TObject);

var id:cardinal;

i:word;

begin

pagecontrol.ActivePageIndex:=1;

GetWindowThreadProcessId(strtoint(applist.cells[1,applist.row]),id);

for i:=1 to processlist.rowcount-1 do

if processlist.Cells[1,i]=inttostr(id) then

begin

processlist.Row:=i;

break;

end;

end;

procedure Tmainform.popmenuapplistPopup(Sender: TObject);

begin

if isIconic(strtoint(applist.cells[1,applist.Row])) then

begin

max.Enabled:=true;

min.Enabled:=false;

norm.Enabled:=true;

end

else

begin

max.Enabled:=false;

min.Enabled:=true;

norm.Enabled:=true;

end;

end;

procedure Tmainform.minClick(Sender: TObject);

begin

ShowWindow(strtoint(applist.cells[1,applist.row]),2);

end;

procedure Tmainform.normClick(Sender: TObject);

begin

ShowWindow(strtoint(applist.cells[1,applist.row]),1);

end;

procedure Tmainform.maxClick(Sender: TObject);

begin

ShowWindow(strtoint(applist.cells[1,applist.row]),3);

end;

procedure Tmainform.activateformClick(Sender: TObject);

begin

ShowWindow(strtoint(applist.cells[1,applist.row]),1);

SetForegroundWindow(strtoint(applist.Cells[1,applist.row]));

end;

procedure Tmainform.newbtnClick(Sender: TObject);

begin

CmdForm.showmodal;

end;

procedure Tmainform.aboutprogrammenuClick(Sender: TObject);

begin

MessageBox(mainform.Handle,'Аналог диспетчера задач','О программе',MB_OK);

end;

procedure Tmainform.newtaskmenuClick(Sender: TObject);

begin

cmdform.ShowModal;

end;

procedure Tmainform.rebootmenuClick(Sender: TObject);

begin

timer.Enabled:=false;

ExitWindowsEx(EWX_REBOOT,0);

end;

procedure Tmainform.shutdownmenuClick(Sender: TObject);

begin

timer.Enabled:=false;

ExitWindowsEx(EWX_SHUTDOWN,0);

end;

procedure Tmainform.userchangemenuClick(Sender: TObject);

begin

timer.Enabled:=false;

ExitWindowsEx(EWX_LOGOFF,0);

end;

end.

Вторая форма:

unit Cmd;

interface

uses

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

Dialogs, StdCtrls;

type

TCmdForm = class(TForm)

okbtn: TButton;

cancelbtn: TButton;

Label1: TLabel;

Cmdtext: TComboBox;

procedure cancelbtnClick(Sender: TObject);

procedure okbtnClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

CmdForm: TCmdForm;

implementation

{$R *.dfm}

procedure TCmdForm.cancelbtnClick(Sender: TObject);

begin

CmdForm.Close;

end;

procedure TCmdForm.okbtnClick(Sender: TObject);

begin

winexec(pchar(cmdtext.text),1);

CmdForm.Close;

end;

end.

6. ОПИСАНИЕ ИСПОЛЬЗОВАННЫХ ЭЛЕМЕНТОВ УПРАВЛЕНИЯ

диспетчер задача процессор память

В программе использованы следующие элементы управления:

- PageControl - набор страниц, сложенных одна на другую.

- StringGrid - отображает различные данные в табличной форме.

- GroupBox - кадр вокруг группы в составе элемента управления с дополнительным заголовком.

- StatusBar - отображает элементы и данные в горизонтальной полосе в окне приложения.

- MainMenu - меню формы.

- Timer - формирует повторяющиеся события.

- PopupMenu - выпадающее меню.

- ComboBox - раскрывающийся список.

- Button - обычная кнопка.

- Label - стандартная надпись.

СПИСОК ЛИТЕРАТУРЫ

1. Delphi 2007. Алгоритмы и программы: О.В. Чеснокова -- Санкт-Петербург, НТ Пресс, 2008 г.

2. Основы программирования в интегрированной среде DELPHI: А. Желонкин -- Москва, Бином. Лаборатория знаний, 2004 г.

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

4. Учимся программировать на Delphi 2007: О.В. Чеснокова -- Москва, НТ Пресс, 2008 г.

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


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

  • Ведение журнала событий системы безопасности Windows. Аудит успехов и аудит отказов. Работа диспетчера задач, методы его запуска. Утилита System Safety Monitor 2.0.6.566 как один из способов обнаружения процессов, запущенных в результате взлома.

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

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

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

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

    курсовая работа [121,3 K], добавлен 12.12.2014

  • Применение программы-имитатора динамического распределения оперативной памяти, выполнение ее на ОС Windows 7 в интегрированной среде. Разработка приложений с графическим интерфейсом Delphi XE3. Автоматическая загрузка, исполнение и добавление процессов.

    курсовая работа [284,7 K], добавлен 12.01.2015

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

    дипломная работа [4,3 M], добавлен 25.01.2013

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

    дипломная работа [4,6 M], добавлен 20.01.2013

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

    дипломная работа [1,1 M], добавлен 11.11.2010

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

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

  • Правила формирования списка на рабочем листе. Что понимается под структурой списка. Как осуществляется ввод данных. Простая сортировка списка. Интерфейс и функции приложения PowerPoint. Создание, редактирование и форматирование текстового документа.

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

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

    курсовая работа [890,5 K], добавлен 05.06.2015

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