laba1
This commit is contained in:
		
							parent
							
								
									ad0f3323f0
								
							
						
					
					
						commit
						1fbb71ecb6
					
				
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										364
									
								
								Lab1/Lab1.c
									
									
									
									
									
								
							
							
						
						
									
										364
									
								
								Lab1/Lab1.c
									
									
									
									
									
								
							| @ -7,103 +7,321 @@ | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | void printError(const wchar_t* message) { | ||||||
| 
 |     wprintf(L"%s: %lu\n", message, GetLastError()); | ||||||
| 
 |  | ||||||
| void PrintAvailableDisplayModes() { |  | ||||||
|     DEVMODE dm;  // содержит сведения о инициализации и среде принтера или устройства отображения.
 |  | ||||||
|     int count = 0; |  | ||||||
|     while (EnumDisplaySettings(NULL, count++, &dm)) { //позволяет получить доступные варианты разрешений и цветов видеосистемы;
 |  | ||||||
|         printf("Resolution: %dx%d, Color: %d bits\n", dm.dmPelsWidth, dm.dmPelsHeight, dm.dmBitsPerPel); |  | ||||||
| 
 |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void PrintCurrentDisplayMode() { |  | ||||||
|     DEVMODE dm; |  | ||||||
|     if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm)) { |  | ||||||
|         printf("Current Resolution: %dx%d, Current Color Depth: %d bits\n", dm.dmPelsWidth, dm.dmPelsHeight, dm.dmBitsPerPel); |  | ||||||
|     } |  | ||||||
|     else { |  | ||||||
|         printf("Unable to retrieve current display settings.\n"); |  | ||||||
|     } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| void ChangeScreenResolution(int width, int height, int colorDepth) { | void listFilesAndDirectories(wchar_t* drivePath) { | ||||||
|     DEVMODE dm; |     WIN32_FIND_DATA findFileData; | ||||||
|     ZeroMemory(&dm, sizeof(dm)); |     //wchar_t searchPath[MAX_PATH];
 | ||||||
|     dm.dmSize = sizeof(dm); |     //swprintf(searchPath, MAX_PATH, L"%s*", drivePath);
 | ||||||
|     dm.dmPelsWidth = width; |     SetCurrentDirectory(drivePath); | ||||||
|     dm.dmPelsHeight = height; |     HANDLE hFind = FindFirstFile(L"*", &findFileData); | ||||||
|     dm.dmBitsPerPel = colorDepth; |     if (hFind == INVALID_HANDLE_VALUE) { | ||||||
|     dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL; |         wprintf(L"Ошибка доступа к директории.\n"); | ||||||
| 
 |  | ||||||
|     LONG result = ChangeDisplaySettings(&dm, CDS_UPDATEREGISTRY); |  | ||||||
|     if (result == DISP_CHANGE_SUCCESSFUL) { |  | ||||||
|         printf("Resolution changed successfully to %dx%d, %d bits color depth.\n", width, height, colorDepth); |  | ||||||
|     } |  | ||||||
|     else { |  | ||||||
|         printf("Failed to change resolution.\n"); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| void ChangeOboi(const char* wallpaperPath) {  // указ
 |  | ||||||
|     |  | ||||||
|     if (GetFileAttributes(wallpaperPath) == INVALID_FILE_ATTRIBUTES) { |  | ||||||
|         printf("File not found: %s\n", wallpaperPath); |  | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // Изменение обоев
 |     wprintf(L"Список файлов и каталогов в корне %s:\n", drivePath); | ||||||
|     if (SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID)wallpaperPath, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE)) { |     do { | ||||||
|         printf("Wallpaper changed successfully to %s\n", wallpaperPath); |         wprintf(L"%s\n", findFileData.cFileName); | ||||||
|     } |     } while (FindNextFile(hFind, &findFileData) != 0); | ||||||
|     else { | 
 | ||||||
|         printf("Failed to change wallpaper to %s\n", wallpaperPath); |     FindClose(hFind); | ||||||
|     } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Функция для получения цвета пикселя под курсором мыши
 |  | ||||||
| void GetPixelColorUnderCursor() { |  | ||||||
| 
 | 
 | ||||||
|     for (int i=0; i < 10; i++) { | 
 | ||||||
|         POINT pt;                  // пара координат
 | 
 | ||||||
|         if (GetCursorPos(&pt)) { | void deleteFileOrDirectory(wchar_t* path) { | ||||||
|             HDC hdc = GetDC(NULL); //контекст устройства для экрана
 |     DWORD attributes = GetFileAttributes(path); | ||||||
|             COLORREF color = GetPixel(hdc, pt.x, pt.y); //RGB red green blue 
 |     if (attributes == INVALID_FILE_ATTRIBUTES) { | ||||||
|             ReleaseDC(NULL, hdc); |         wprintf(L"Файл или каталог не найден.\n"); | ||||||
|             printf("Color under cursor: RGB(%d, %d, %d)\n", GetRValue(color), GetGValue(color), GetBValue(color)); |        return; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (attributes & FILE_ATTRIBUTE_DIRECTORY) { | ||||||
|  |         // Удаление каталога
 | ||||||
|  |         if (RemoveDirectory(path)) { | ||||||
|  |             wprintf(L"Каталог %s успешно удален.\n", path); | ||||||
|         } |         } | ||||||
|         else { |         else { | ||||||
|             printf("Unable to get cursor position.\n"); |             wprintf(L"Не удалось удалить каталог %s.\n", path); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |         // Удаление файла
 | ||||||
|  |         if (DeleteFile(path)) { | ||||||
|  |             wprintf(L"Файл %s успешно удален.\n", path); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |             wprintf(L"Не удалось удалить файл %s.\n", path); | ||||||
|         } |         } | ||||||
|         Sleep(1000); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| int main() | int main() | ||||||
| { | { | ||||||
|      |  | ||||||
|     PrintAvailableDisplayModes(); |  | ||||||
| 
 | 
 | ||||||
|     | setlocale(LC_ALL, ""); | ||||||
|     PrintCurrentDisplayMode(); |  | ||||||
| 
 | 
 | ||||||
|    | wprintf(L"LABA 1\n"); | ||||||
|   //ChangeScreenResolution(1920, 1440, 32);
 |  | ||||||
| 
 | 
 | ||||||
|     ChangeScreenResolution(2160, 1440, 32); | //GetCurrentDirectory
 | ||||||
|  | WCHAR buffer[MAX_PATH]; | ||||||
|  | DWORD length; | ||||||
| 
 | 
 | ||||||
|     ChangeOboi(L"D:\\bts.png"); | // Получаем текущую директорию
 | ||||||
|  | length = GetCurrentDirectory(MAX_PATH, buffer); | ||||||
| 
 | 
 | ||||||
|     GetPixelColorUnderCursor(); | wprintf(L"Current directory : %s\n", buffer); | ||||||
| 
 | 
 | ||||||
|     system("pause"); |  | ||||||
| 
 | 
 | ||||||
|     return 0; | 
 | ||||||
|    | //SetCurrentDirectory
 | ||||||
|  | SetCurrentDirectory(L"D:\\univer"); | ||||||
|  | WCHAR buffer1[MAX_PATH]; | ||||||
|  | DWORD length1; | ||||||
|  | 
 | ||||||
|  | // Получаем текущую директорию
 | ||||||
|  | length1 = GetCurrentDirectory(MAX_PATH, buffer1); | ||||||
|  | 
 | ||||||
|  | wprintf(L"Current directory after change : %s\n", buffer1); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | //GetLogicalDrives
 | ||||||
|  | DWORD drives = GetLogicalDrives(); | ||||||
|  | 
 | ||||||
|  | printf("Logical drives bitmask: 0x%lx\n", drives); | ||||||
|  | 
 | ||||||
|  | for (int i = 0; i < 26; i++) { | ||||||
|  |     // Проверяем, установлен ли бит, соответствующий текущему диску
 | ||||||
|  |     if (drives & (1 << i)) { | ||||||
|  |         // Формируем имя диска (например, "C:\")
 | ||||||
|  |         char driveName[4] = { 'A' + i, ':', '\\', '\0' }; | ||||||
|  |         printf(driveName); | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | printf("\n"); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | //FindFirstFile  FindNextFileW    FindClose
 | ||||||
|  | WIN32_FIND_DATA findFileData; | ||||||
|  | HANDLE hFind = FindFirstFile(L"D:\\poznanie\\*", &findFileData);; | ||||||
|  | 
 | ||||||
|  | if (hFind != INVALID_HANDLE_VALUE) { | ||||||
|  |     do { | ||||||
|  |         wprintf(L"Найден файл: %s\n", findFileData.cFileName); | ||||||
|  |     } while (FindNextFileW(hFind, &findFileData) != 0); | ||||||
|  | 
 | ||||||
|  |     // Закрываем дескриптор поиска
 | ||||||
|  |     FindClose(hFind); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | wchar_t dir[512] = L"D:\\poznanie"; // Укажите ваш путь
 | ||||||
|  | wchar_t filePath[512]; | ||||||
|  | 
 | ||||||
|  | // Создание полного пути к файлу
 | ||||||
|  | swprintf(filePath, 512, L"%s\\example.txt", dir); | ||||||
|  | 
 | ||||||
|  | // Создание и работа с файлом
 | ||||||
|  | HANDLE hFile = CreateFileW(filePath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // Запись в файл
 | ||||||
|  | const char* data = "Hello, World!"; // Данные для записи
 | ||||||
|  | DWORD written; | ||||||
|  | if (!WriteFile(hFile, data, (DWORD)strlen(data), &written, NULL)) { | ||||||
|  | 
 | ||||||
|  |     CloseHandle(hFile); | ||||||
|  |     return 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Закрытие файла
 | ||||||
|  | CloseHandle(hFile); | ||||||
|  | 
 | ||||||
|  | // Открытие файла для чтения
 | ||||||
|  | hFile = CreateFileW(filePath, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); | ||||||
|  | if (hFile == INVALID_HANDLE_VALUE) { | ||||||
|  |     return 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Чтение из файла
 | ||||||
|  | char bufferRead[256]; // Буфер для чтения
 | ||||||
|  | DWORD read; | ||||||
|  | if (!ReadFile(hFile, bufferRead, sizeof(bufferRead) - 1, &read, NULL)) { | ||||||
|  |     CloseHandle(hFile); | ||||||
|  |     return 1; | ||||||
|  | } | ||||||
|  | bufferRead[read] = '\0'; // Завершаем строку
 | ||||||
|  | 
 | ||||||
|  | // Печать прочитанных данных
 | ||||||
|  | printf("Прочитанные данные: %s\n", bufferRead); // Используйте %s для char
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | wchar_t filePath1[256] = L"C:\\ProgramData"; | ||||||
|  | wchar_t fullPath[256]; | ||||||
|  | 
 | ||||||
|  | if (!GetFullPathNameW(filePath1, 256, fullPath, NULL)) { | ||||||
|  |     CloseHandle(hFile); | ||||||
|  |     return 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | wprintf(L"Полный путь к файлу: %s\n", fullPath); | ||||||
|  | 
 | ||||||
|  | // Получение атрибутов файла
 | ||||||
|  | DWORD attributes = GetFileAttributesW(filePath1); | ||||||
|  | if (attributes == INVALID_FILE_ATTRIBUTES) { | ||||||
|  |     CloseHandle(hFile); | ||||||
|  |     return 1; | ||||||
|  | } | ||||||
|  | wprintf(L"Атрибуты файла: %lu\n", attributes); | ||||||
|  | if (attributes & FILE_ATTRIBUTE_HIDDEN) { // Проверка на скрытый атрибут
 | ||||||
|  |     wprintf(L"Атрибуты файла: скрытый\n"); | ||||||
|  | } | ||||||
|  | if (attributes & FILE_ATTRIBUTE_SYSTEM) { | ||||||
|  |     wprintf(L"Атрибуты файла: Файл или каталог, часть или весь каталог которого использует операционная система.\n"); | ||||||
|  | } | ||||||
|  | if (attributes & FILE_ATTRIBUTE_ARCHIVE) { | ||||||
|  |     wprintf(L"Атрибуты файла: Файл или каталог, который является архивным файлом или каталогом.\n "); | ||||||
|  | } | ||||||
|  | if (attributes & FILE_ATTRIBUTE_DIRECTORY) { | ||||||
|  |     wprintf(L"Атрибуты файла: Директория\n "); | ||||||
|  | } | ||||||
|  | if (attributes & FILE_ATTRIBUTE_DEVICE) { | ||||||
|  |     wprintf(L"Атрибуты файла: Директория \n"); | ||||||
|  | } | ||||||
|  | if (attributes & FILE_ATTRIBUTE_NORMAL) { | ||||||
|  |     wprintf(L"Атрибуты файла: Файл, у которого не установлены другие атрибуты.\n "); | ||||||
|  | } | ||||||
|  | if (attributes & FILE_ATTRIBUTE_TEMPORARY) { | ||||||
|  |     wprintf(L"Атрибуты файла: Файл, который используется для временного хранения. \n "); | ||||||
|  | } | ||||||
|  | if (attributes & FILE_ATTRIBUTE_SPARSE_FILE) { | ||||||
|  |     wprintf(L"Атрибуты файла: Файл, который является разреженным файлом. \n"); | ||||||
|  | } | ||||||
|  | if (attributes & FILE_ATTRIBUTE_REPARSE_POINT) { | ||||||
|  |     wprintf(L"Атрибуты файла: Файл или каталог, имеющий связанную точку повторной обработки, или файл, являющийся символической ссылкой.Файл или каталог, имеющий связанную точку повторной обработки, или файл, являющийся символической ссылкой.\n "); | ||||||
|  | } | ||||||
|  | if (attributes & FILE_ATTRIBUTE_NOT_CONTENT_INDEXED) { | ||||||
|  |     wprintf(L"Атрибуты файла: Файл или каталог не подлежит индексации службой индексации контента. \n"); | ||||||
|  | } | ||||||
|  | // Получение размера файла
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | DWORD fileSize = GetFileSize(hFile, NULL); | ||||||
|  | if (fileSize == INVALID_FILE_SIZE) { | ||||||
|  | 
 | ||||||
|  |     CloseHandle(hFile); | ||||||
|  |     return 1; | ||||||
|  | } | ||||||
|  | wprintf(L"Размер файла: %lu байт\n", fileSize); | ||||||
|  | 
 | ||||||
|  | // Получение времени создания файла
 | ||||||
|  | FILETIME creationTime, lastAccessTime, lastWriteTime; | ||||||
|  | if (!GetFileTime(hFile, &creationTime, &lastAccessTime, &lastWriteTime)) { | ||||||
|  | 
 | ||||||
|  |     CloseHandle(hFile); | ||||||
|  |     return 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | SYSTEMTIME stUTC, stLocal; | ||||||
|  | FileTimeToSystemTime(&creationTime, &stUTC); | ||||||
|  | SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal); | ||||||
|  | wprintf(L"Время создания файла: %02d/%02d/%d %02d:%02d\n", stLocal.wDay, stLocal.wMonth, stLocal.wYear, stLocal.wHour, stLocal.wMinute); | ||||||
|  | 
 | ||||||
|  | // Закрытие файла
 | ||||||
|  | CloseHandle(hFile); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | setlocale(LC_ALL, ""); | ||||||
|  | 
 | ||||||
|  | DWORD drives1 = GetLogicalDrives(); | ||||||
|  | wprintf(L"Доступные логические диски:\n"); | ||||||
|  | 
 | ||||||
|  | for (int i = 0; i < 26; i++) { | ||||||
|  |     if (drives1 & (1 << i)) { | ||||||
|  |         wchar_t driveLetter = L'A' + i; | ||||||
|  |         wprintf(L"%c:\\\n", driveLetter); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | wprintf(L"Доступные логические диски:\n"); | ||||||
|  | //GetLogicalDriveStrings
 | ||||||
|  | WCHAR b[256]; | ||||||
|  | 
 | ||||||
|  | // Получаем строки логических дисков
 | ||||||
|  | DWORD result = GetLogicalDriveStrings(256, b); | ||||||
|  | 
 | ||||||
|  | WCHAR* drive = b; | ||||||
|  | // Пока не достигнут конец всех строк
 | ||||||
|  | while (*drive) { | ||||||
|  |     wprintf(L"Диск: %ls\n", drive); | ||||||
|  |     // Переходим к следующей строке
 | ||||||
|  |     drive += 4; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | wchar_t chosenDrive[4]; | ||||||
|  | wprintf(L"\nВведите логический диск (например, C:\\): "); | ||||||
|  | wscanf_s(L"%3s", chosenDrive, (unsigned)_countof(chosenDrive)); | ||||||
|  | 
 | ||||||
|  | listFilesAndDirectories(chosenDrive); | ||||||
|  | 
 | ||||||
|  | wchar_t targetPath[MAX_PATH]; | ||||||
|  | wprintf(L"\nВведите имя файла или каталога для удаления (например, C:\\example.txt): "); | ||||||
|  | wscanf_s(L"%259s", targetPath, (unsigned)_countof(targetPath)); | ||||||
|  | 
 | ||||||
|  | deleteFileOrDirectory(targetPath); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | return 0; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | //1.	Вывести на экран доступные варианты разрешения экрана и разрядности цвета. 
 | ||||||
|  | // Обозначить текущие значения. 
 | ||||||
|  | // Предусмотреть возможность изменения разрешения экрана, 
 | ||||||
|  | // изменения обоев рабочего стола.
 | ||||||
|  | //  Выводить цвет точки, на которую указывает курсор мыши.
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user