Смекни!
smekni.com

Информационная система сравнительного анализа работы компьютера (стр. 2 из 4)

strcat (lpszSystemInfo, inet_ntoa (adr. sin_addr));

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10;

nAdapter++;

}

}

WSACleanup (); }

}

SendMessage (StaticText, WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);

}

Информация о принтерах компьютера.

Для получения информации принтерах компьютера, предназначена функция PrinterInfo ().

void PrinterInfo ()

{

LPTSTR lpszSystemInfo = new char [BUFSIZE]; // указатель на строку, в которой

for (int a=0; a<BUFSIZE; a++)

lpszSystemInfo [a] = '&bsol;0';

PRINTER_INFO_2 printinfo;

char pname [100];

char strpPrinterName [100], strpPortName [100], strpDriverName [100], strpPrintProcessor [100];

printinfo. pPrinterName = strpPrinterName;

printinfo. pPortName = strpPortName;

printinfo. pDriverName = strpDriverName;

printinfo. pPrintProcessor = strpPrintProcessor;

PRINTER_INFO_2 *Pr;

DWORD byteNeed = 0,prCount=0; // Кол-во необходимых байт, количество принтеров

// Делаем первый вызов с буфером NULL, чтоб узнать нужный размер буфера

системная информация компьютер программа

EnumPrinters (PRINTER_ENUM_CONNECTIONS|PRINTER_ENUM_LOCAL,NULL,2,NULL,0,&byteNeed,&prCount);

// Создаембуфер

Pr = new PRINTER_INFO_2 [byteNeed];

// Делаем второй вызов уже с нужным буфером

if (EnumPrinters (PRINTER_ENUM_CONNECTIONS|PRINTER_ENUM_LOCAL,NULL,2, (LPBYTE) Pr,byteNeed,&byteNeed,&prCount))

{

for (int i = 0; i < prCount; ++i)

{

strcat (lpszSystemInfo, "Установленные принтеры: &bsol;t");

strcat (lpszSystemInfo, Pr [i]. pPrinterName);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Порт принтера: &bsol;t&bsol;t");

strcat (lpszSystemInfo, Pr [i]. pPortName);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Драйверпринтера: &bsol;t");

strcat (lpszSystemInfo, Pr [i]. pDriverName);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Процессорпечати: &bsol;t");

strcat (lpszSystemInfo, Pr [i]. pPrintProcessor);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

SendMessage (StaticText, WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);

}

}

delete Pr;

}

Информация о видеорежиме компьютера.

Для получения информации о видеорежиме компьютера, предназначена функция DxInfo ().

void DxInfo ()

{

LPTSTR lpszSystemInfo = new char [BUFSIZE]; // указатель на строку, в которой

for (int a=0; a<BUFSIZE; a++)

lpszSystemInfo [a] = '&bsol;0';

char *tmp = new char [20];

GUID *lpGUID;

LPDIRECTDRAW lplpDD;

DirectDrawCreate (0,&lplpDD,NULL);

DDSURFACEDESC pDDS;

ZeroMemory (&pDDS, sizeof (DDSURFACEDESC));

pDDS. dwSize = sizeof (DDSURFACEDESC);

lplpDD->GetDisplayMode (&pDDS);

strcat (lpszSystemInfo, "Информация о текущем видеорежиме: ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10;

lpszSystemInfo [n_long+2] = 13;

lpszSystemInfo [n_long+3] = 10;

itoa (pDDS. dwHeight, tmp,

10);

strcat (lpszSystemInfo, "Количество точек по вертикали: &bsol;t");

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

itoa (pDDS. dwWidth, tmp,

10);

strcat (lpszSystemInfo, "Количество точек по горизонтали: &bsol;t");

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

itoa (pDDS. dwRefreshRate, tmp,

10);

strcat (lpszSystemInfo, "Частотаобновления, Гц: &bsol;t&bsol;t");

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

itoa (pDDS. dwAlphaBitDepth, tmp,

10);

strcat (lpszSystemInfo, "Глубинаальфа-буффра (бит/пиксел): &bsol;t");

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

itoa (pDDS. ddpfPixelFormat. dwRGBBitCount, tmp,

10);

strcat (lpszSystemInfo, "ГлубинаRGB цвета (бит/пиксел): &bsol;t");

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

itoa (pDDS. ddpfPixelFormat. dwZBufferBitDepth, tmp,

10);

strcat (lpszSystemInfo, "ГлубинаZ-буффра (бит/пиксел): &bsol;t");

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

itoa (pDDS. ddpfPixelFormat. dwAlphaBitDepth, tmp,

10);

strcat (lpszSystemInfo, "Глубинаальфа-канала (бит/пиксел): &bsol;t");

strcat (lpszSystemInfo, tmp);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

SendMessage (StaticText, WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);

}

Информация о дисках компьютера.

Для получения информации о дисках компьютера, предназначена функция DrivesInfo ().

void DrivesInfo ()

{

LPTSTR lpszSystemInfo = new char [BUFSIZE]; // указатель на строку, в которой

for (int a=0; a<BUFSIZE; a++)

lpszSystemInfo [a] = '&bsol;0';

char cDevices [] = "A: &bsol;";

DWORD dwDevices = GetLogicalDrives (); // получаемвселогическиедиски

bool flag = false;

for (int i = 0; dwDevices; i++) // проверяемнаналичиедисков

{

if (dwDevices & 1)

{

cDevices [0] = 'A' + i;

flag = true;

}

if (flag)

{

flag = false;

strcat (lpszSystemInfo, "Диск ");

strcat (lpszSystemInfo, cDevices);

strcat (lpszSystemInfo, " ");

int n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10;

UINT type = GetDriveType (cDevices);

switch (type)

{

case DRIVE_UNKNOWN:

strcat (lpszSystemInfo, "Неизвестныйтип");

break;

case DRIVE_NO_ROOT_DIR:

strcat (lpszSystemInfo, "Не правильный путь");

break;

case DRIVE_REMOVABLE:

strcat (lpszSystemInfo, "Съёмныйдиск");

break;

case DRIVE_FIXED:

strcat (lpszSystemInfo, "Жесткийдиск");

break;

case DRIVE_REMOTE:

strcat (lpszSystemInfo, "Удалённыйилиnetwork диск. ");

break;

case DRIVE_CDROM:

strcat (lpszSystemInfo, "CD-ROM диск");

break;

case DRIVE_RAMDISK:

strcat (lpszSystemInfo, "RAM диск");

break;

}

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

char VolumeNameBuffer [100];

VolumeNameBuffer [0] = '&bsol;0';

char FileSystemNameBuffer [100];

FileSystemNameBuffer [0] = '&bsol;0';

unsigned long VolumeSerialNumber;

BOOL GetVolumeInformationFlag = GetVolumeInformation (

cDevices,

VolumeNameBuffer,

100,&VolumeSerialNumber,

NULL, // &MaximumComponentLength,

NULL, // &FileSystemFlags,

FileSystemNameBuffer,

100

);

strcat (lpszSystemInfo, "Имядиска: ");

strcat (lpszSystemInfo, VolumeNameBuffer);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10;

char *serial = new char [20];

serial [0] = '&bsol;0';

itoa (VolumeSerialNumber, serial,

10);

strcat (lpszSystemInfo, "Серийныйномер: ");

strcat (lpszSystemInfo, serial);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10;

strcat (lpszSystemInfo, "Файловаясистема: ");

strcat (lpszSystemInfo, FileSystemNameBuffer);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long] = 13;

lpszSystemInfo [n_long+1] = 10;

if (type! = DRIVE_FIXED)

{

dwDevices >>= 1;

continue;

}

DWORD FreeBytesAvailable;

DWORD TotalNumberOfBytes;

DWORD TotalNumberOfFreeBytes;

BOOL GetDiskFreeSpaceFlag = GetDiskFreeSpaceEx (

cDevices, // directory name

(PULARGE_INTEGER) &FreeBytesAvailable, // bytes available to caller

(PULARGE_INTEGER) &TotalNumberOfBytes, // bytes on disk

(PULARGE_INTEGER) &TotalNumberOfFreeBytes // free bytes on disk

);

if (GetDiskFreeSpaceFlag! = FALSE)

{

char * free = new char [20];

itoa ( (unsigned long int) FreeBytesAvailable, free,

10);

char * total = new char [20];

itoa ( (unsigned long int) TotalNumberOfBytes, total,

10);

char * avaliable = new char [20];

itoa ( (unsigned long int) TotalNumberOfFreeBytes, avaliable,

10);

strcat (lpszSystemInfo, "Свободно: ");

strcat (lpszSystemInfo, free);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Общийобъем: ");

strcat (lpszSystemInfo, total);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

strcat (lpszSystemInfo, "Доступно ");

strcat (lpszSystemInfo, avaliable);

strcat (lpszSystemInfo, " ");

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

n_long = strlen (lpszSystemInfo);

lpszSystemInfo [n_long-2] = 13;

lpszSystemInfo [n_long-1] = 10;

}

}

dwDevices >>= 1;

}

2. Использование программы Sysinfo для анализа работы компьютера

Для начала выполнения программы запустите файл SysInfo. exe. На экране появится окно с простым интерфейсом которое представлено на рисунке 3.1, в котором с левой стороны информация об оборудовании компьютера по отдельным пунктам, а именно:

системная информация;

оперативная память;

информация о процессоре;

IPадрес машины;

информация о принтерах;

текущий видеорежим;

информация о локальных дисках.

Справа же будет отображаться подробная информации по тому или иному пункту.

Рисунок 3.1 - Внешний вид главного окна программы

Выводы

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

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

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

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

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

недостаточная гармоничность и привлекательность графической составляющей проекта;

небольшие задержки при выполнении приложения на компьютерах с малым объемом оперативной памяти;

Данные недостатки могли бы быть исправлены при наличии более широких знаний и навыков решения задач подобного рода.

Список используемых источников

1. Павловская Т.А. С/C++. Программирование на языке высокого уровня. СПб: Издательство "Питер", 2001. - 464с.

2. Глушаков С.В., Коваль А.В., Черпнин С.А. Программирование на VisualC++: Издательство "Фолио", 2002. - 721с. - (Учебный курс).

3. Бондарено В.М., Рублинецкий В.И., Качко Е.Г. Основы программирования: Издательство "Фолио", 1997. - 368с.

4. http://msdn. microsoft.com/

5. http://intuit.ru/

6. http://windxp.ru/

7. ДСТУ 3008-95 "ЗВІТИ У СФЕРІ НАУКИ І ТЕХНІКИ. Структура та правила оформлення".

Приложение текст программы

main. cpp

#include<windows. h> // подключение библиотеки с функциями API

#include "resource. h"

#include "Index. h"

#include <fstream. h>

#include <ddraw. h>

#defineId_List4002

// Глобальные переменные:

HINSTANCE hInst; // Указатель приложения

LPCTSTR szWindowClass = "SysInfo";

LPCTSTRszTitle= "Информация о системе";

LPCTSTRlpText= "Программа для получения информации о системе&bsol;nВерсия: 1.0&bsol;n2009";

LPCTSTRlpCaption= "О программе";

HWNDListbox;

HWND StaticText;