Разработка алгоритмов анализа работы компьютера




Курсовой проект

пояснительная записка

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

(тема проекта)

 

 

2010 г.


Реферат

 

Пояснительная записка содержит 21 страницу, 3 части, 1 приложение, 7 источников литературы.

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

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

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

Программа представляет собой приложение, написанное в среде Microsoft Visual C++.

КЛЮЧЕВЫЕ СЛОВА: СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ, ИНФОРМАЦИЯ О СИСТЕМЕ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, АНАЛИЗА РАБОТЫКОМПЬЮТЕРА, ИНФОРМАЦИЯ О ПРОЦЕССОРЕ, ФУНКЦИИ ДЛЯ ПОЛУЧЕНИЯ ИНФОРМАЦИИ О СИСТЕМЕ.


Содержание

Реферат

Введение

1. Разработка системных программ анализа и управления вычислительной системы

1.1 Разработка алгоритмов анализа работы компьютера

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

Выводы

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

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


Введение

 

Ни для кого не новость, что в мире существует великое множество языков так не похожих друг на друга. Но вот почему-то инженерам-программистам не пришелся по душе не один из существующих и они стали изобретать свои. Так чем же все таки не угодили все язык мира, что их оставили, и стали изобретать новые?

Изучение естественного языка является сложным процессом, включающим как обретение элементарных автоматических навыков, так и восприятие сложных абстрактных понятий. При этом возможность относительно свободного использования языка как средства общения появляется уже на ранних стадиях этого процесса, когда вообще ещё не имеет смысла говорить о знании языка. Многозначность одних и тех же слов есть еще одним недостатком естественных языков, не говоря уже о сочетаниях слов и предложениях, которые в некоторых случаях можно трактовать N способами. Таким образом разговорные языки не могут быть применены для задания точных команд и действий.

В данный момент довольно популярным языком программирования является С++. Его используют при написании пользовательских приложений. Это язык высокого уровня, он довольно краток и в то же время дает практически безграничные возможности для решения любых проблем.

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


Разработка системных программ анализа и управления вычислительной системы

 

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

Рассматриваются способы получения системной информации о компьютере. Все функции опираются на Windows API. Робота их подразумевается только под WIN32 (лишь отдельные функции работают под WIN32s).

Разработка алгоритмов анализа работы компьютера

 

Информация об основных каталогах.

Три функции дают пути к трем основным каталогам: 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<BUFSIZE; 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<n_long; 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<BUFSIZE; 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<n_long; a++)

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

}

 

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

Для получения информации об имени локальной машины, имени доступной локальной машины, ip адресе компьютера, предназначена функция GetCurentIP ().

 

void GetCurentIP ()

{

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

for (int a=0; a<BUFSIZE; 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_in adr;

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<BUFSIZE; 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 < prCount; ++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 ().

 

void DxInfo ()

{

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

for (int a=0; a<BUFSIZE; 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 ().

void DrivesInfo ()

{

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

for (int a=0; a<BUFSIZE; 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,

);

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 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;

}




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-12-28 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: