Аппаратная характеристика ПК
История развития реестра Windows, описание разделов, WinApi функции. Аналоги программ других разработчиков. Последовательность проектирования Windows-приложения, которое будет выводить аппаратную характеристику ПК на экран. Руководство пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 23.07.2013 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, unit1;
type
TForm2 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
SpeedButton1: TSpeedButton;
Memo1: TMemo;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure SpeedButton1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
function GetComputerNetName:string; //узнаем имя компьютера
var
buffer:array[0..255] of Char;
size:DWORD;
begin
size:=256;
if GetComputerName(buffer,size) then
Result:=buffer
else Result:= '';
end;
function GetCurrentUserName:String; //узнаем имя текущего пользователя
const
cnMaxUserNameLen=254;
var
sUserName:String;
dwUserNameLen:DWORD;
begin
dwUserNameLen:=cnMaxUserNameLen-1;
SetLength(sUserName,cnMaxUserNameLen);
GetUserName(PChar(sUserName),dwUserNameLen);
SetLength(sUserName,dwUserNameLen);
Result:=sUserName;
end;
procedure TForm2.SpeedButton1Click(Sender: TObject); //информация о пользователе
const
TokenSize=800; // расчет (SizeOf(Pointer)=4 *200)
var
hToken:THandle;
pTokenInfo:PTOKENPRIVILEGES;
ReturnLen:Cardinal;
i:Integer;
PrivName:PChar;
DisplayName:PChar;
NameSize:Cardinal;
DisplSize:Cardinal;
LangId:Cardinal;
begin
Memo1.Lines.Clear;
Edit1.text:=GetComputerNetName; //вызываем функцию имени "имя компьютера"
Edit2.text:= GetCurrentUserName; //вызываем функцию "имя пользователя"
GetMem(pTokenInfo, TokenSize);
if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken) then ShowMessage('OpenProcessToken error');
if not GetTokenInformation(hToken, TokenPrivileges, pTokenInfo, TokenSize, ReturnLen) then
ShowMessage('GetTokenInformation error');
GetMem(PrivName, 255);
GetMem(DisplayName, 255);
for i := 0 to pTokenInfo.PrivilegeCount - 1 do
begin
DisplSize := 255;
NameSize := 255;
LookupPrivilegeName(nil, pTokenInfo.Privileges[i].Luid, PrivName, Namesize);
LookupPrivilegeDisplayName(nil, PrivName, DisplayName, DisplSize, LangId);
memo1.lines.Add(PrivName +^I + DisplayName);
end;
FreeMem(PrivName);
FreeMem(DisplayName);
FreeMem(pTokenInfo);
end;
procedure TForm2.FormActivate(Sender: TObject); //плавно всплывающее окно для формы 2
const
n=127;
var
i:Byte;
begin
AlphaBlend:=True;
for i:=1 to n do
begin
AlphaBlendValue:=i*2;
Repaint;
end;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Form2.Left:=(Screen.Width-Form2.Width) div 2; //по середине моннитора
Form2.Top:=(Screen.Height-Form2.Height) div 2;
end;
end.
ПРИЛОЖЕНИЕ В
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, unit1, ComCtrls;
type
TForm3 = class(TForm)
TreeView1: TTreeView;
procedure FormCreate(Sender: TObject);
procedure TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure NextLevel(ParentNode: TTreeNode); //переключение и показ папок на лок дисках
function DirectoryName(name: string): boolean;
begin
result:=(name<>'.') and (name<>'..');
end;
var
sr, srChild: TSearchRec;
node: TTreeNode;
path: string;
begin
node:=ParentNode;
path:='';
repeat
path:=node.Text+'\'+path;
node:=node.Parent;
until node=nil;
if FindFirst(path+'*.*', faDirectory, sr)=0 then
begin
repeat
if (sr.Attr and faDirectory <> 0) and DirectoryName(sr.Name)
then
begin
node:=Form3.TreeView1.Items.AddChild(ParentNode, sr.Name);
node.ImageIndex:=0;
node.SelectedIndex:=1;
node.HasChildren:=false;
if FindFirst(path+sr.Name+'\*.*', faDirectory, srChild)=0
then
begin
repeat
if (srChild.Attr and faDirectory<>0) and DirectoryName(srChild.Name)
then node.HasChildren := true;
until (FindNext(srChild) <> 0) or node.HasChildren;
end;
FindClose(srChild);
end;
until FindNext(sr) <> 0;
end
else ParentNode.HasChildren:=false;
FindClose(sr);
end;
procedure TForm3.FormCreate(Sender: TObject); //показать локальные диски и находящиеся
//в них папки
const
IconNames:array [0..6] of String=('CLOSEDFOLDER','OPENFOLDER','FLOPPY','HARD','NETWORK','CDROM','RAM');
var
c:Char;
s:String;
Node:TTreeNode;
DriveType:Integer;
bm,mask:TBitmap;
i:Integer;
begin
Form3.Left:=(Screen.Width-Form3.Width) div 2; //по середине моннитора
Form3.Top:=(Screen.Height-Form3.Height) div 2;
TreeView1.Items.BeginUpdate;
TreeView1.Images:=TImageList.CreateSize(16, 16);
bm:=TBitmap.Create;
mask:=TBitmap.Create;
for i:=low(IconNames) to high(IconNames) do
begin
bm.Handle:=LoadBitmap(HInstance, PChar(IconNames[i]));
bm.Width:=16;
bm.Height:=16;
mask.Assign(bm);
mask.Mask(clBlue);
TreeView1.Images.Add(bm, mask);
end;
for c:='A' to 'Z' do
begin
s:=c+':';
DriveType:=GetDriveType(PChar(s));
if DriveType=1 then continue;
node:=Form3.TreeView1.Items.AddChild(nil, s);
case DriveType of
DRIVE_REMOVABLE: node.ImageIndex:=2;
DRIVE_FIXED: node.ImageIndex:=3;
DRIVE_REMOTE: node.ImageIndex:=4;
DRIVE_CDROM: node.ImageIndex:=5;
else node.ImageIndex:=6;
end;
node.SelectedIndex:=node.ImageIndex;
node.HasChildren:=true;
end;
TreeView1.Items.EndUpdate;
end;
procedure TForm3.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
begin
TreeView1.Items.BeginUpdate;
Node.DeleteChildren;
NextLevel(Node);
TreeView1.Items.EndUpdate;
end;
procedure TForm3.FormActivate(Sender: TObject); //плавно всплывающее окно для формы 3
const n=127;
var
i:Byte;
begin
AlphaBlend:=True;
for i:=1 to n do
begin
AlphaBlendValue:=i*2;
Repaint;
end;
end;
end.
ПРИЛОЖЕНИЕ Г
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Winsock, registry, ExtCtrls, StdCtrls, ImgList, Buttons, ShellAPI, ComCtrls;
type
TForm4 = class(TForm)
Image1: TImage;
Timer1: TTimer;
StatusBar1: TStatusBar;
ImageList1: TImageList;
Image2: TImage;
procedure FormShow(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Image2Click(Sender: TObject);
private
{ Private declarations }
public
procedure info(s1, s2: string);
end;
var
Form4: TForm4;
gn_speed_y: Integer;
gn_text_y: Integer;
_eax, _ebx, _ecx, _edx: Longword;
i: Integer;
b: Byte;
b1: Word;
s,s1,s2,s3,s_all:string;
q:TImageIndex;
lpDisplayDevice: TDisplayDevice;
dwFlags: DWORD;
cc: DWORD;
const
gn_speed_x: Integer =8;
gn_text_x: Integer =15;
gl_start: Boolean =True;
implementation
{$R *.dfm}
procedure TForm4.FormShow(Sender: TObject);
var
_eax, _ebx, _ecx, _edx: Longword;
i: Integer;
b: Byte;
s, s1, s2, s3, s_all: string;
MS:TMemoryStatus;
wVerReq: WORD;
wsaData: TWSAData;
iw: pchar;
h: PHostEnt;
c: array[0..128] of char;
isa:integer;
ld:DWORD;
PathArray : array [0..255] of char;
OSVersion:TOSVersionInfo;
begin
info('','');
//Set the startup colour of the image
Image1.Canvas.Brush.Color:=clBtnFace;
Image1.Canvas.FillRect(rect(0, 0, Image1.Width,Image1.Height));
begin
asm //get brand ID
mov eax,$80000002
db $0F
db $A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
s := '';
s1 := '';
s2 := '';
s3 := '';
for i := 0 to 3 do
begin
b := lo(_eax);
s3:= s3 + chr(b);
b := lo(_ebx);
s := s + chr(b);
b := lo(_ecx);
s1 := s1 + chr(b);
b := lo(_edx);
s2 := s2 + chr(b);
_eax := _eax shr 8;
_ebx := _ebx shr 8;
_ecx := _ecx shr 8;
_edx := _edx shr 8;
end;
s_all := s3 + s + s1 + s2;
asm
mov eax,$80000003
db $0F
db $A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
s := '';
s1 := '';
s2 := '';
s3 := '';
for i := 0 to 3 do
begin
b := lo(_eax);
s3 := s3 + chr(b);
b := lo(_ebx);
s := s + chr(b);
b := lo(_ecx);
s1 := s1 + chr(b);
b := lo(_edx);
s2 := s2 + chr(b);
_eax := _eax shr 8;
_ebx := _ebx shr 8;
_ecx := _ecx shr 8;
_edx := _edx shr 8;
end;
s_all := s_all + s3 + s + s1 + s2;
asm
mov eax,$80000004
db $0F
db $A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
s := '';
s1 := '';
s2 := '';
s3 := '';
for i := 0 to 3 do
begin
b := lo(_eax);
s3 := s3 + chr(b);
b := lo(_ebx);
s := s + chr(b);
b := lo(_ecx);
s1 := s1 + chr(b);
b := lo(_edx);
s2 := s2 + chr(b);
_eax := _eax shr 8;
_ebx := _ebx shr 8;
_ecx := _ecx shr 8;
_edx := _edx shr 8;
end;
if s2[Length(s2)] = #0 then setlength(s2, Length(s2) - 1);
info('', 'Процессор - ' + s_all + s3 + s + s1 + s2);
end;
lpDisplayDevice.cb := sizeof(lpDisplayDevice);
while EnumDisplayDevices(nil, cc, lpDisplayDevice, dwFlags) do
begin
Inc(cc);
begin
info('', 'Видео карта - ' + lpDisplayDevice.DeviceString);
end
end;
begin
GlobalMemoryStatus(MS);
begin
info('', 'Оперативня память - '+FormatFloat('#,###" Мгб"', MS.dwTotalPhys / 1044484) );
end
end;
begin
OSVersion.dwOSVersionInfoSize := SizeOf(OSVersion);
if GetVersionEx(OSVersion) then
info('', 'Версия операционной системы - ' + Format('%d.%d (%d.%s)',[OSVersion.dwMajorVersion,OSVersion.dwMinorVersion,(OSVersion.dwBuildNumber and $FFFF),OSVersion.szCSDVersion]));
end;
begin
ld:=GetLogicalDrives;
for isa:=0 to 25 do
begin
if (ld and (1 shl isa))<>0 then
if GetDriveType(PChar(Char(Ord('A')+isa) + ':\'))=DRIVE_FIXED then
info('','HDD - ' +Char(Ord('A')+isa)+':\');
if GetDriveType(PChar(Char(Ord('A')+isa) + ':\'))=DRIVE_REMOVABLE then
info('','Floppy - '+Char(Ord('A')+isa)+':\');
if GetDriveType(PChar(Char(Ord('A')+isa)+':\'))=DRIVE_CDROM then
info('','CD-Rom - '+Char(Ord('A')+isa)+':\');
end;
begin
wVerReq:=MAKEWORD(1,1);
WSAStartup(wVerReq,wsaData);
GetHostName(@c,128);
h:=GetHostByName(@c);
iw:=iNet_ntoa(PInAddr(h^.h_addr_list^)^);
WSACleanup;
begin
info('','IP - '+iw);
end;
begin
info('','HOST - '+h^.h_Name);
end;
end;
begin
FillChar(PathArray,SizeOf(PathArray),#0);
GetWindowsDirectory(PathArray,255);
info('','Дериктория Windows - '+Format('%s',[PathArray]));
end;
end;
end;
procedure TForm4.info(s1, s2: string);
begin
if s1 <> '' then
begin
Image1.Canvas.Brush.Color := clBtnFace;
Image1.Canvas.Font.Color := clBlack;
Image1.Canvas.TextOut(gn_text_x, gn_text_y, s1);
end;
if s2 <> '' then
begin
Image1.Canvas.Brush.Color := clBtnFace;
Image1.Canvas.Font.Color := clBlack;
Image1.Canvas.TextOut(gn_text_x + Image1.Canvas.TextWidth(s1), gn_text_y, s2);
end;
Inc(gn_text_y, 13);
end;
procedure TForm4.Timer1Timer(Sender: TObject);
begin
StatusBar1.Panels[0].Text:='Сейчас: '+DateToStr(Now)+' '+TimeToStr(Now);
end;
procedure TForm4.FormCreate(Sender: TObject);
begin
Form4.Left:=(Screen.Width-Form4.Width) div 2; //по середине моннитора
Form4.Top:=(Screen.Height-Form4.Height) div 2;
end;
procedure TForm4.FormActivate(Sender: TObject);
const
n=127;
var
i:Byte;
begin
AlphaBlend:=True;
for i:=1 to n do
begin
AlphaBlendValue:=i*2;
Repaint;
end;
end;
procedure TForm4.Image2Click(Sender: TObject);
var
reestr : TRegistry;
begin
reestr:=TRegistry.Create;
reestr.RootKey := HKEY_CURRENT_USER;
Reestr.OpenKey('SOFTWARE\MICROSOFT\Internet Explorer\Main',True);
close;
end;
end.
Размещено на Allbest.ru
Подобные документы
Общая характеристика используемых типов параметров дерева реестра в разных версиях Windows. Сравнение способов хранения реестров Windows. Анализ взаимосвязи между кустами реестра и соответствующими им файлами. Понятие, сущность и значение reg-файла.
реферат [420,2 K], добавлен 04.10.2010Программа "Редактор реестра". Разделы реестра Windows и их назначение. Хранение настроек экрана, раскладки клавиатуры, сетевых подключений, настроек программ. Сохранение изменений настроек, совершенных пользователем. Информация о настройках компьютера.
презентация [1008,0 K], добавлен 05.04.2017Теоретические сведения о таймерах Windows. Описание используемых WinAPI функций для измерения текущего времени, для создания виртуальных таймеров. Выключение и перезагрузка компьютера по нажатию на кнопку и по таймеру, вывод текущей даты и времени.
курсовая работа [50,0 K], добавлен 18.05.2014Проектирование службы Windows и приложения для управления этой службой, которое позволит контролировать данные приложения - запускать и завершать определенные процессы по желанию пользователя через определенные промежутки времени. Инструкция по установке.
курсовая работа [2,8 M], добавлен 05.01.2013Операционная система MS-DOS: история и характеристика. Обзор стандартных программ операционной системы Windows. Способы запуска программ. Служебные приложения Windows и их назначение: диспетчер задач, проверка, очистка, дефрагментация и архивация диска.
реферат [221,4 K], добавлен 06.01.2015Таймер в Windows как устройство ввода информации, которое извещает приложение о том, что истек заданный интервал времени. Работа с таймером в условиях WinAPI, процесс 32-битного программирования на ассемблере под Windows. Результат выполнения программы.
курсовая работа [165,6 K], добавлен 18.05.2014Характеристика операционной системы. История развития Windows. Сравнительная характеристика версий Windows. Элементы и инструменты Windows XP. Прикладные программы в Windows XP. Работа настольных и портативных компьютеров под управлением Windows.
доклад [19,1 K], добавлен 16.10.2011Windows как посредник пользователя и операционной системы, облегчая процесс общения между ними, история становления и развития ее первых версий. Функциональные особенности и отличия Windows 95/98/ME и Windows NT/2000/XP/Vista/7, их архитектурные решения.
презентация [12,7 K], добавлен 23.10.2013Появление первых версий Windows, их графические интерфейсы и расширения для DOS. Семейства Windows 3.x и Windows 9.x, их особенности и основные функции. Эволюция технологии Plug and Play. Наиболее существенные улучшения в современных версиях Windows.
реферат [162,3 K], добавлен 13.06.2014Структура режима пользователя, предоставляющего возможность пользователю вступать во взаимодействие с системой. Описание режима ядра, который обеспечивает безопасное выполнение приложений (программ) пользователя. Уровень аппаратных абстракций Windows NT.
презентация [29,6 K], добавлен 23.10.2013