![]() |
|
|
Курсовая работа: Информационная система сравнительного анализа работы компьютера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 <windows. h> // подключение библиотеки с функциями API #include "resource. h" #include "Index. h" #include <fstream. h> #include <ddraw. h> #define Id_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); // 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<=n_Count)) && (HIWORD (wParam) ==LBN_SELCHANGE)) { 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 = new char [_MAX_PATH]; OPENFILENAME of; // Работа с диалоговым окном strcpy (adress,"SysInfo"); of. lStructSize=sizeof (OPENFILENAME); of. hwndOwner=hWnd; of. hInstance=hInst; of. lpstrFilter="txt Files (*. 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<<text; fout. close (); delete [] text; } } Index. cpp #include "Index. h" #include <windows. h> #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<BUFSIZE; 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 <= BUFSIZE) { 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 <= BUFSIZE) { 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<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); } 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); } 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 (); } } /*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<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; } 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); } 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, 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 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; } 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 <ddraw. h> #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; }; |
Страницы: 1, 2
![]() |
||
НОВОСТИ | ![]() |
![]() |
||
ВХОД | ![]() |
|
Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |