Реферат по предмету "Информатика, программирование"


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

Министерство образования и науки Украины
Харьковский национальный университет радиоэлектроники
Компьютерной инженерии и управления
АПВТ
Факультет
Кафедра

Курсовойпроект
пояснительная записка
Информационная система сравнительного анализа работы компьютера
(тема проекта)
2010 г.
Реферат
Пояснительная записка содержит 21 страницу, 3 части, 1 приложение,7 источников литературы.
Работа посвящена теме информационная система сравнительного анализаработы компьютера.
Цель — разработать программу, которая смогла бы выводить системнуюинформацию о компьютере, информацию об оперативной памяти, процессоре, ip адрес компьютера, информацию о принтерах,текущем видеорежиме, информацию о дисках.
Реализация задачи потребовала изучения специальных функций дляполучения информации о системе, а также дополнительных библиотек.
Программа представляет собой приложение, написанное в среде Microsoft Visual C++.
КЛЮЧЕВЫЕ СЛОВА: СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ, ИНФОРМАЦИЯ О СИСТЕМЕ,ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, АНАЛИЗА РАБОТЫ КОМПЬЮТЕРА, ИНФОРМАЦИЯ О ПРОЦЕССОРЕ, ФУНКЦИИДЛЯ ПОЛУЧЕНИЯ ИНФОРМАЦИИ О СИСТЕМЕ.

Содержание
 
Реферат
Введение
1. Разработка системных программ анализаи управления вычислительной системы
1.1 Разработка алгоритмов анализа работы компьютера
2. Использование программы Sysinfo для анализа работы компьютера
Выводы
Список используемых источников
Приложение текст программы
 
Введение
Ни для кого не новость, что в мире существует великое множествоязыков так не похожих друг на друга. Но вот почему-то инженерам-программистам непришелся по душе не один из существующих и они стали изобретать свои. Так чем жевсе таки не угодили все язык мира, что их оставили, и стали изобретать новые?
Изучение естественного языка является сложным процессом, включающимкак обретение элементарных автоматических навыков, так и восприятие сложных абстрактныхпонятий. При этом возможность относительно свободного использования языка как средстваобщения появляется уже на ранних стадиях этого процесса, когда вообще ещё не имеетсмысла говорить о знании языка. Многозначность одних и тех же слов есть еще однимнедостатком естественных языков, не говоря уже о сочетаниях слов и предложениях,которые в некоторых случаях можно трактовать N способами. Таким образом разговорные языки не могут быть примененыдля задания точных команд и действий.
В данный момент довольно популярным языком программирования являетсяС++. Его используют при написании пользовательских приложений. Это язык высокогоуровня, он довольно краток и в то же время дает практически безграничные возможностидля решения любых проблем.
С++ — это язык программирования общего назначения, хорошоизвестный своей эффективностью, экономичностью, и переносимостью. Указанные преимуществаС++ обеспечивают хорошее качество разработки почти любого вида программного продукта.Использование С++ в качестве инструментального языка позволяет получать быстрыеи компактные программы. Во многих случаях программы, написанные на С++, сравнимыпо скорости с программами, написанными на языке ассемблера.
1. Разработка системных программ анализа иуправления вычислительной системы
В данном курсовом проекте необходимо разработать программу,которая смогла бы выводить системную информацию о компьютере, информацию обоперативной памяти, процессоре, ip адрескомпьютера, информацию о принтерах, текущем видеорежиме, информацию о дисках.
Рассматриваются способы получения системной информации о компьютере.Все функции опираются на Windows API. Робота их подразумевается только под WIN32(лишь отдельные функции работают под WIN32s).
 1.1 Разработка алгоритмов анализа работы компьютера
Информация об основных каталогах.
Три функции дают пути к трем основным каталогам: GetWindowsDirectory- к каталогу ОС, GetSystemDirectory — к системной папке ОС и GetCurrentDirectory- к текущей папке. Эти функции имеют два параметра — путь к папке и размер его представленияв памяти.
Информация о пользователе и компьютере.
Имя компьютера позволяет получить функция GetComputerName. Внее передается два параметра — параметр типа PChar, в который записывается имя компьютераи второй параметр, определяющий длину записи под имя. Следующая пользовательскаяфункция выводит имя компьютера:
if (GetComputerName (temp, &cchBuff))
{
strcat (lpszSystemInfo,«Имя компьютера: \t\t»);
strcat (lpszSystemInfo,temp);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
}
Очень похожим способом получается имя пользователя из функцииGetUserName:
if (GetUserName (temp,&cchBuff))
{
strcat (lpszSystemInfo,«Имя пользователя: \t»);
strcat (lpszSystemInfo,temp);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
}
Информация об операционная системе.
Информация об операционной системе хранится в записи типа ExpandEnvironmentStrings,выглядещей следующим образом:
dwResult = ExpandEnvironmentStrings(
«Тип OS: \t\t\t%OS%»,
temp,
BUFSIZE);
Состояние памяти.
Для получения детальной информации о состоянии памяти компьютерапредназначена функция API GlobalMemoryStatus. В функцию передается переменная типаMEMORYSTATUS.
Следующая пользовательская функция определяет размер структурыMemoryStatus количество используемой ОЗУ, количество физической памяти, количествосвободной физической памяти, количество виртуальной памяти, количество свободнойвиртуальной памяти:
void MemStat ()
{
MEMORYSTATUS stat;
GlobalMemoryStatus(&stat);
LPTSTR lpszSystemInfo = new char[BUFSIZE]; // указатель на строку, в которой
for (int a=0; a
lpszSystemInfo [a] = '\0'; //будет информация о системе.
char *tmp = new char[32];
strcat (lpszSystemInfo,«Размер структуры MemoryStatus \t\t\t»);
itoa (stat. dwLength,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Количество используемой ОЗУ,% \t\t\t»);
itoa (stat. dwMemoryLoad,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-3]= 13;
lpszSystemInfo [n_long-2]= 10;
strcat (lpszSystemInfo,«Количество физической памяти, Kb \t\t\t»);
itoa (stat. dwTotalPhys/DIV,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Свободно физической памяти, Kb \t\t\t»);
itoa (stat. dwAvailPhys/DIV,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Количество виртуальной памяти, Kb \t\t\t»);
itoa (stat. dwTotalVirtual/DIV,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Количество свободной виртуальной памяти, Kb \t»);
itoa (stat. dwAvailVirtual/DIV,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
n_long = strlen (lpszSystemInfo);
for (a=0; a
SendMessage (StaticText,WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);
}
Информация о процессоре.
Функция GetSystemInfo с единственным параметром типа записи SYSTEM_INFO даетдоступ к различной системной информации. В частности, уровень процессора можно узнатьиз поля записи TSystemInfo — wProcessorLevel. Следующая пользовательская функцияопределяет количество процессоров (ядер), тип, архитектура, уровень, revision процессора, активная маска процессора:
void CPUInfo ()
{
SYSTEM_INFO siSysInfo;
GetSystemInfo (&siSysInfo);
LPTSTR lpszSystemInfo= new char [4000]; // указатель на строку, в которой
for (int a=0; a
lpszSystemInfo [a] = '\0'; //будет информация о системе.
char *tmp = new char [32];
strcat (lpszSystemInfo,«Кличество процессоров (ядер) \t»);
itoa (siSysInfo. dwNumberOfProcessors,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Тип процессора \t\t\t»);
itoa (siSysInfo. dwProcessorType,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Архитектура процессора \t\t»);
itoa (siSysInfo. wProcessorArchitecture,tmp, 20);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Level процессора \t\t\t»);
itoa (siSysInfo. wProcessorLevel,tmp, 20);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Revision процессора \t\t»);
itoa (siSysInfo. wProcessorRevision,tmp, 20);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2] = 13;
lpszSystemInfo [n_long-1] = 10;
strcat (lpszSystemInfo,«Активная маска процессора \t\t»);
itoa (siSysInfo. dwActiveProcessorMask,tmp, 20);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
n_long = strlen (lpszSystemInfo);
for (a=0; a
SendMessage (StaticText,WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);
}
Информация об ip адресекомпьютера.
Для получения информации об имени локальной машины, имени доступнойлокальной машины, ip адресе компьютера,предназначена функция GetCurentIP ().
void GetCurentIP ()
{
LPTSTR lpszSystemInfo = new char[BUFSIZE]; // указатель на строку, в которой
for (int a=0; a
lpszSystemInfo [a] = '\0'; //будет информация о системе.
char *tmp = new char[32];
WSADATA wsaData;
WORD WINSOCK_VERSION;
if (! WSAStartup (WINSOCK_VERSION,&wsaData))
{
char chInfo [64];
if (! gethostname(chInfo,sizeof (chInfo)))
{
strcat (lpszSystemInfo,«Имя локальной машины: \t\t»);
strcat (lpszSystemInfo,chInfo);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long]= 13;
lpszSystemInfo [n_long+1]= 10;
hostent *sh;
sh=gethostbyname ((char*) &chInfo);
if (sh! =NULL)
{
strcat (lpszSystemInfo,«Имя доступной локальной машины: \t»);
strcat (lpszSystemInfo,sh->h_name);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long]= 13;
lpszSystemInfo [n_long+1]= 10;
int nAdapter = 0;
while (sh->h_addr_list[nAdapter])
{
struct sockaddr_inadr;
memcpy (&adr. sin_addr,sh->h_addr_list[nAdapter],sh->h_length);
strcat (lpszSystemInfo,«IP адрес локальной машины: \t»);
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
lpszSystemInfo [a]= '\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
{
strcat (lpszSystemInfo,«Установленные принтеры: \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,«Порт принтера: \t\t»);
strcat (lpszSystemInfo,Pr [i]. pPortName);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Драйвер принтера: \t»);
strcat (lpszSystemInfo,Pr [i]. pDriverName);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Процессор печати: \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 ().
voidDxInfo ()
{
LPTSTRlpszSystemInfo = new char [BUFSIZE]; // указатель на строку, в которой
for (int a=0; a
lpszSystemInfo [a] = '\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, “Количество точек по вертикали: \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, «Количество точек по горизонтали: \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, «Частота обновления, Гц: \t\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, «Глубина альфа-буффра(бит/пиксел): \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 цвета (бит/пиксел): \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-буффра (бит/пиксел): \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, «Глубина альфа-канала(бит/пиксел): \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 ().
voidDrivesInfo ()
{
LPTSTRlpszSystemInfo = new char [BUFSIZE]; // указатель на строку, в которой
for (int a=0; a
lpszSystemInfo [a] = '\0';
char cDevices [] = «A: \\»;
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] = '\0';
char FileSystemNameBuffer [100];
FileSystemNameBuffer [0] = '\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] = '\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 ondisk
(PULARGE_INTEGER) &TotalNumberOfFreeBytes // free byteson 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. Глушаков С.В., Коваль А.В., Черпнин С.А. Программирование на Visual C++: Издательство«Фолио», 2002. — 721с. — (Учебный курс).
3. Бондарено В.М., Рублинецкий В.И., Качко Е.Г. Основы программирования: Издательство«Фолио», 1997. — 368с.
4. http://msdn. microsoft.com/
5. http://intuit.ru/
6. http://windxp.ru/
7. ДСТУ 3008-95 «ЗВІТИ У СФЕРІ НАУКИ І ТЕХНІКИ. Структура та правила оформлення».
Приложение текст программы
main. cpp
#include // подключение библиотеки с функциями API
#include «resource.h»
#include «Index.h»
#include
#include
#defineId_List 4002
// Глобальные переменные:
HINSTANCE hInst;// Указатель приложения
LPCTSTR szWindowClass= «SysInfo»;
LPCTSTR szTitle = «Информация о системе»;
LPCTSTR lpText = «Программа для получения информации о системе\nВерсия:1.0\n2009»;
LPCTSTR lpCaption = «О программе»;
HWND Listbox;
HWND StaticText;
HWND hWnd;
const int n_Count =7;
Info Info_list [n_Count];
void Create_List ();
void Save ();
// Предварительноеописание функций
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
// Основная программа
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
// Регистрация классаокна
MyRegisterClass (hInstance);
// Создание окна приложения
if (! InitInstance(hInstance, nCmdShow))
{
return FALSE;
}
// Цикл обработки сообщений
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return msg. wParam;
}
// FUNCTION: MyRegisterClass()
// Регистрирует классокна
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex. cbSize = sizeof(WNDCLASSEX);
wcex. style= CS_HREDRAW| CS_VREDRAW; // стиль окна
wcex. lpfnWndProc=(WNDPROC) WndProc; // оконная процедура
wcex. cbClsExtra= 0;
wcex. cbWndExtra= 0;
wcex. hInstance= hInstance;// указатель приложения
wcex. hIcon= LoadIcon(hInstance, MAKEINTRESOURCE (IDI_ICON1)); // опре-деление иконки
wcex. hCursor= LoadCursor(NULL, IDC_ARROW); // опреде-ление курсора
wcex. hbrBackground=GetSysColorBrush (COLOR_BTNFACE); // ус-тановка фона
wcex. lpszMenuName=(LPSTR) IDR_MENU1; // определение меню
wcex. lpszClassName=szWindowClass; // имя класса
wcex. hIconSm= NULL;
return RegisterClassEx(&wcex); // регистрация класса окна
}
// FUNCTION: InitInstance (HANDLE, int)
// Создает окно приложения и сохраняетуказатель приложения в переменной hInst
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
hInst = hInstance; // сохраняет указатель приложения в переменной hInst
hWnd=CreateWindow(szWindowClass, // имя класса окна
szTitle, // имя приложения
WS_OVERLAPPEDWINDOW,// стиль окна
CW_USEDEFAULT, // положение по Х
CW_USEDEFAULT, // положение по Y
CW_USEDEFAULT, // размер по Х
CW_USEDEFAULT, // размер по Y
NULL, // описатель родительского окна
NULL, // описатель меню окна
hInstance, // указатель приложения
NULL); // параметры создания.
if (! hWnd) // Если окно не создалось, функция возвращает FALSE
{
return FALSE;
}
StaticText = CreateWindow(«edit», "", WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL| WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_READONLY,0,0,0,0, hWnd, (HMENU) 4001, hInst, NULL);
Listbox = CreateWindow(«listbox», "", LBS_NOTIFY|WS_VSCROLL|WS_BORDER|WS_CHILD|WS_VISIBLE|WS_TABSTOP|LBS_DISABLENOSCROLL,0,0,0,0, hWnd, (HMENU) 4002, hInst, NULL);
Create_List ();
ShowWindow (hWnd, nCmdShow);// Показать окно
UpdateWindow (hWnd);// Обновить окно
return TRUE; // Успешноезавершение функции
}
// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
// Оконная процедура. Принимаети обрабатывает все сообщения, прихо-дящие в приложение
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
RECT rt;
switch (message)
{
case WM_CREATE: // Сообщениеприходит при создании окна
break;
case WM_SIZE:
{
GetClientRect (hWnd,&rt);
int w = (rt. right-rt.left) /4;
MoveWindow (Listbox,rt. left, rt. top, w, rt. bottom-rt. top, TRUE);
MoveWindow (StaticText,rt. left+w, rt. top, w*3, rt. bottom-rt. top, TRUE);
}
break;
case WM_COMMAND:
{
switch (LOWORD (wParam))
{
case Id_List:
{
int Count = SendMessage(Listbox, LB_GETCURSEL, 0, 0);
if ( ( (Count>=0)&& (Count
{
Info_list [Count].function ();
}
}
break;
case ID_MENUITEM40001:
Save ();
break;
case ID_ABOUT:
MessageBox (hWnd,lpText,lpCaption,MB_OK);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
}
}
break;
case WM_PAINT: // Перерисоватьокно
hdc = BeginPaint (hWnd, &ps); // Начать графический вывод
GetClientRect (hWnd, &rt); // Область окна для рисования
EndPaint (hWnd, &ps); // Закончить графический вывод
break;
case WM_DESTROY:// Завершение работы
PostQuitMessage (0);
break;
default:
// Обработка сообщений, которыене обработаны пользователем
return DefWindowProc(hWnd, message, wParam, lParam);
}
return DefWindowProc(hWnd, message, wParam, lParam);;
}
void Create_List ()
{
Info_list [0]. CreateInfo(«Системная информация», 0, & (SysInf));
Info_list [1]. CreateInfo(«Оперативная память», 1, & (MemStat));
Info_list [2]. CreateInfo («Информация о процессоре», 1, & (CPUInfo));
Info_list [3]. CreateInfo(«IP Адрес машины», 1, & (GetCurentIP));
Info_list [4]. CreateInfo(«Информация о принтерах», 1, & (PrinterInfo));
Info_list [5]. CreateInfo(«Текущий видеорежим», 1, & (DxInfo));
Info_list [6]. CreateInfo(«Информация о дисках», 1, & (DrivesInfo));
}
void Save ()
{
char *adress = newchar [_MAX_PATH];
OPENFILENAME of;
// Работа с диалоговым окном
strcpy (adress,«SysInfo»);
of. lStructSize=sizeof(OPENFILENAME);
of. hwndOwner=hWnd;
of. hInstance=hInst;
of. lpstrFilter=«txtFiles (*. txt) \0*. txt\0\0»;
of. lpstrCustomFilter=NULL;
of. nMaxCustFilter=0;
of. nFilterIndex=0;
of. lpstrFile=adress;
of. nMaxFile=_MAX_PATH;
of. lpstrFileTitle=NULL;
of. nMaxFileTitle=_MAX_FNAME+ _MAX_EXT;
of. lpstrInitialDir=NULL;
of. lpstrTitle=NULL;
of. Flags=OFN_OVERWRITEPROMPT;
of. nFileOffset=0;
of. nFileExtension=0;
of. lpstrDefExt=«info»;
of. lCustData=0L;
of. lpfnHook=NULL;
of. lpTemplateName=NULL;
if (GetSaveFileName(&of) ==TRUE)
{
strcpy (adress, of.lpstrFile);
ofstream fout (adress);
char *text = new char[4000];
GetWindowText (StaticText,text, 4000);
fout
fout. close ();
delete [] text;
}
}
Index. cpp
#include «Index.h»
#include
#define DIV 1024
extern HWND Listbox;
extern HWND StaticText;
extern HWND hWnd;
Info:: Info ()
{
Index = 0;
value = new char [50];
}
void Info:: CreateInfo(char* value, int Index, void (*function) ())
{
this->value = value;
this->Index = Index;
this->function =function;
SendMessage (Listbox,LB_ADDSTRING, NULL, (LPARAM) value);
}
void SysInf ()
{
char * lpszSystemInfo= new char [BUFSIZE]; // указатель на строку, в которой
for (int a=0; a
lpszSystemInfo [a] = '\0';
// будет информация о системе.
DWORD cchBuff = 256; // длина имени компьютера или
// пользователя.
DWORD dwResult; // возвращаемое значение функции.
// Получаем и отображаем имя компьютера.
LPTSTR temp = new TCHAR[256];
if (GetComputerName(temp, &cchBuff))
{
strcat (lpszSystemInfo,«Имя компьютера: \t\t»);
strcat (lpszSystemInfo,temp);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
}
// Получаем и отображаем имя пользователя.
if (GetUserName (temp,&cchBuff))
{
strcat (lpszSystemInfo,«Имя пользователя: \t»);
strcat (lpszSystemInfo,temp);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
}
// Получаем и отображаем системнуюдиректорию.
if (GetSystemDirectory(temp, MAX_PATH+1))
{
strcat (lpszSystemInfo,«Системная директория: \t»);
strcat (lpszSystemInfo,temp);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
}
// Получаем и отображаем директориюWindows.
if (GetWindowsDirectory(temp, MAX_PATH+1))
{
strcat (lpszSystemInfo,«Директория Windows: \t»);
strcat (lpszSystemInfo,temp);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
}
// Получаем переменнуюокружения OS.
dwResult = ExpandEnvironmentStrings(
«Тип OS: \t\t\t%OS%»,
temp,
BUFSIZE);
if (dwResult
{
strcat (lpszSystemInfo,temp);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
}
dwResult = ExpandEnvironmentStrings(
«Папка TEMP: \t\t%TEMP%»,
temp,
BUFSIZE);
if (dwResult
{
strcat (lpszSystemInfo,temp);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
}
SendMessage (StaticText,WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);
}
void MemStat ()
{
MEMORYSTATUS stat;
GlobalMemoryStatus(&stat);
LPTSTR lpszSystemInfo = new char [BUFSIZE]; // указательна строку, в которой
for (int a=0; a
lpszSystemInfo [a] = '\0'; // будет информация о системе.
char *tmp = new char[32];
strcat (lpszSystemInfo,«Размер структуры MemoryStatus \t\t\t»);
itoa (stat. dwLength,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo, «Количество используемой ОЗУ,% \t\t\t»);
itoa (stat. dwMemoryLoad,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-3]= 13;
lpszSystemInfo [n_long-2]= 10;
strcat (lpszSystemInfo,«Количество физической памяти, Kb \t\t\t»);
itoa (stat. dwTotalPhys/DIV,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Свободно физической памяти, Kb \t\t\t»);
itoa (stat. dwAvailPhys/DIV,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Количество виртуальной памяти, Kb \t\t\t»);
itoa (stat. dwTotalVirtual/DIV,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Количество свободной виртуальной памяти, Kb \t»);
itoa (stat. dwAvailVirtual/DIV,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
n_long = strlen (lpszSystemInfo);
for (a=0; a
SendMessage (StaticText,WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);
}
void CPUInfo ()
{
SYSTEM_INFO siSysInfo;
GetSystemInfo (&siSysInfo);
LPTSTR lpszSystemInfo= new char [4000]; // указатель на строку, в которой
for (int a=0; a
lpszSystemInfo [a] = '\0'; // будет информация о системе.
char *tmp = new char [32];
strcat (lpszSystemInfo, «Кличество процессоров (ядер) \t»);
itoa (siSysInfo. dwNumberOfProcessors,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Тип процессора \t\t\t»);
itoa (siSysInfo. dwProcessorType,tmp,
10);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Архитектура процессора \t\t»);
itoa (siSysInfo. wProcessorArchitecture,tmp, 20);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Level процессора \t\t\t»);
itoa (siSysInfo. wProcessorLevel,tmp, 20);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Revision процессора \t\t»);
itoa (siSysInfo. wProcessorRevision,tmp, 20);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Активная маска процессора \t\t»);
itoa (siSysInfo. dwActiveProcessorMask,tmp, 20);
strcat (lpszSystemInfo,tmp);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
n_long = strlen (lpszSystemInfo);
for (a=0; a
SendMessage (StaticText,WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);
}
void GetCurentIP ()
{
LPTSTR lpszSystemInfo= new char [BUFSIZE]; // указатель на строку, в которой
for (int a=0; a
lpszSystemInfo [a] = '\0'; // будет информация о системе.
char *tmp = new char[32];
WSADATA wsaData;
WORD WINSOCK_VERSION;
if (! WSAStartup (WINSOCK_VERSION,&wsaData))
{
char chInfo [64];
if (! gethostname(chInfo,sizeof (chInfo)))
{
strcat (lpszSystemInfo,«Имя локальной машины: \t\t»);
strcat (lpszSystemInfo,chInfo);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long]= 13;
lpszSystemInfo [n_long+1]= 10;
hostent *sh;
sh=gethostbyname ((char*) &chInfo);
if (sh! =NULL)
{
strcat (lpszSystemInfo,«Имя доступной локальной машины: \t»);
strcat (lpszSystemInfo,sh->h_name);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long]= 13;
lpszSystemInfo [n_long+1]= 10;
int nAdapter = 0;
while (sh->h_addr_list[nAdapter])
{
struct sockaddr_inadr;
memcpy (&adr. sin_addr,sh->h_addr_list[nAdapter],sh->h_length);
strcat (lpszSystemInfo,«IP адрес локальной машины: \t»);
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 (); }
}
/*NCB SNcb; // Структурадля работы с NetBios
CHAR rc = 0; // Код возврата
CHAR Status [256]; // Буфер для полученияданных
CHAR HostName [] =«SomeHost»; // Имя удалённого компа
CHAR MAC [20]; // Буфер для нашего MAC-адреса.
memset (&SNcb,0, sizeof (SNcb));
SNcb. ncb_command =NCBRESET;
SNcb. ncb_lana_num= 0;
rc=Netbios (&SNcb);// Сбрасываем NetBios
memset (&SNcb,0, sizeof (NCB));
SNcb. ncb_command =NCBASTAT;
SNcb. ncb_buffer =(unsigned char*) Status;
SNcb. ncb_length =256;
lstrcpy ( (char*) SNcb.ncb_callname, HostName);
SNcb. ncb_lana_num = 0;// Сетевой адаптор по умалчанию
rc = Netbios (&SNcb);
if (rc==NRC_GOODRET)// Если всё ОК
memcpy (MAC, Status,
6);
// itoa (MAC, tmp,20);
strcat (lpszSystemInfo,Status);
strcat (lpszSystemInfo," ");
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long]= 13;
lpszSystemInfo [n_long+1]= 10; */
SendMessage (StaticText,WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);
}
void PrinterInfo ()
{
LPTSTR lpszSystemInfo= new char [BUFSIZE]; // указатель на строку, в которой
for (int a=0; a
lpszSystemInfo [a]= '\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
{
strcat (lpszSystemInfo, «Установленные принтеры: \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,«Порт принтера: \t\t»);
strcat (lpszSystemInfo,Pr [i]. pPortName);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Драйвер принтера: \t»);
strcat (lpszSystemInfo,Pr [i]. pDriverName);
strcat (lpszSystemInfo," ");
n_long = strlen (lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
strcat (lpszSystemInfo,«Процессор печати: \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;
}
void DxInfo ()
{
LPTSTR lpszSystemInfo= new char [BUFSIZE]; // указатель на строку, в которой
for (int a=0; a
lpszSystemInfo [a]= '\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,“Количество точек по вертикали: \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, «Количество точек по горизонтали: \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,«Частота обновления, Гц: \t\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,«Глубина альфа-буффра (бит/пиксел): \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 цвета (бит/пиксел): \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-буффра (бит/пиксел): \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,«Глубина альфа-канала (бит/пиксел): \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);
}
void DrivesInfo ()
{
LPTSTR lpszSystemInfo= new char [BUFSIZE]; // указатель на строку, в которой
for (int a=0; a
lpszSystemInfo [a]= '\0';
char cDevices [] =«A: \\»;
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]= '\0';
char FileSystemNameBuffer[100];
FileSystemNameBuffer[0] = '\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 = newchar [20];
serial [0] = '\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, // directoryname
(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 longint) FreeBytesAvailable, free,
10);
char * total = newchar [20];
itoa ( (unsigned longint) TotalNumberOfBytes, total,
10);
char * avaliable =new char [20];
itoa ( (unsigned longint) 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;
}
strcat (lpszSystemInfo,“ „);
int n_long = strlen(lpszSystemInfo);
lpszSystemInfo [n_long-2]= 13;
lpszSystemInfo [n_long-1]= 10;
SendMessage (StaticText,WM_SETTEXT, 0, (LPARAM) lpszSystemInfo);
}
Index. h
#pragma once
#include
#define BUFSIZE 1024
void SysInf ();
void MemStat ();
void CPUInfo ();
void GetCurentIP ();
void PrinterInfo ();
void DxInfo ();
void DrivesInfo ();
class Info
{
public:
Info ();
void CreateInfo (char*value, int Index, void (*function) ());
void (*function) ();
private:
int Index;
char *value;
};


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат «Всесторонняя поддержка детей, пострадавших от насилия»
Реферат Проведение гематологического обследования рыб
Реферат Проект кормоцеха для овцеводческого комплекса
Реферат Проектирование свинарника-откормочника на 1100 голов
Реферат Проект комплексной механизации водоснабжения свиноводческого комплекса
Реферат Проектирование комплекса машин для возделывания и уборки перца сладкого в условиях Нечернозёмной зоны России
Реферат Техника и электроника СВЧ (Часть 2)
Реферат Of Mice And Men What Are Friends
Реферат Товароведная характеристика ассортимента и потребительских свойств зубных паст
Реферат Цареубийство 1881г
Реферат War Against Boys Essay Research Paper It
Реферат Возникновение и развитие педагогики в России
Реферат 4. СНГ как зона пересечения интересов России и стран блока нато III
Реферат История развития службы по чрезвычайным ситуациям
Реферат Построения локальной вычислительной сети подразделения организации под управлением операционной системы Windows NT