diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..bdad8a2 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/main.c b/main.c index 70f059a..d07bf4e 100644 --- a/main.c +++ b/main.c @@ -1,7 +1,11 @@ #include #include #include +#include +// Лабораторная работа № 2 - устройства ручного ввода + +// --- Информация о клавиатуре int getLogicalDriveStrings() { printf("- GetLogicalDriveStrings:\n"); char buffer[4096]; // сам буфер для строки @@ -250,23 +254,147 @@ int createFile() { return 0; } +// --- Информация о клавиатуре +void getKeyboardType(){ + printf("\t- getKeyboardType()\n"); + BYTE typeValue; + typeValue = GetKeyboardType(0); + printf("- Информация о клавиатуре:\n"); + switch (typeValue) { + case 1: + printf("83-клавишная клавиатура для IBM PC/XT -совместимых компьютеров\n"); + break; + case 2: + printf("102-клавишная клавиатура Olivetti\n"); + break; + case 3: + printf("IBM PC/AT -совместимая клавиатура (84клавиши)\n"); + break; + case 4: + printf("Расширенная IBM-клавиатура (101- или 102 клавиши)\n"); + break; + case 5: + printf("Клавиатура Nokia 1050\n"); + break; + case 6: + printf("Клавиатура Nokia 9140\n"); + break; + case 7: + printf("Японская клавиатура\n"); + break; + default: + printf("Видимо клавиатуры не существует\n"); + break; + } + printf("Число функциональных клавиш = %d\n", GetKeyboardType(2L)); +} // позволяет получить тип клавиатуры и количество функциональных клавиш +void getKeyboardState(){ + printf("\n\t- getKeyboardState()\n"); + BYTE keyState[256] = {0}; -int main() { + // Получение состояния всех клавиш + GetKeyboardState(keyState); + + // Вывод номеров нажатых клавиш в консоль + printf("На момент запуска программы были нажаты клавиши под номерами:\n"); + for (int i = 0; i < 256; i++) { + if (keyState[i] & 0x80) { + printf("Клавиша %d\n", i); + } + } +} // позволяет получить текущее состояние всех клавиш (клавиатуры и мыши) +// --- Информация о мыши +void getCursorPos(){ + printf("\t- getCursorPos()\n"); + POINT cp; + GetCursorPos(&cp); + printf("Текущая позиция курсора: (%ld, %ld)\n", cp.x, cp.y); +} // указывает положение курсора мыши +void getCaretBlinkTime(){ + printf("\n\t- getCaretBlinkTime()\n"); + printf("Время мерцания каретки - %dмс\n", GetCaretBlinkTime()); +} // позволяет получить время мерцания каретки +void getSystemMetrics(){ + printf("\n\t- getSystemMetrics()\n"); + printf("Количество кнопок мыши: %d\n", GetSystemMetrics(SM_CMOUSEBUTTONS)); +} // позволяет получить количество кнопок мыши +// --- Управляющие функции +void showCursor(){ + printf("\t- showCursor()\n"); + printf ("Сейчас курсор исчезнет на 3 сек\n"); + // CHAR age; + // scanf("%c", &age); + // sleep(1); + ShowCursor(FALSE); + // scanf("%c", &age); + sleep(3); + ShowCursor(TRUE); + printf ("Курсор вернулся\n"); +} // показывает и скрывает курсор +void swapMouseButton(){ + printf("\n\t- swapMouseButton()\n"); + printf ("Сейчас на 5 секунд основные кнопки мыши поменяются местами\n"); + SwapMouseButton (1); + sleep(5); + SwapMouseButton (0); + printf ("Кнопки мыши вернулись на свои места\n"); +} // позволяет поменять функции кнопок между собой +void setCaretBlinkTime(){ + printf("\n\t- setCaretBlinkTime()\n"); + UINT blinkTime = GetCaretBlinkTime(); + UINT blinkTime_old = GetCaretBlinkTime(); + printf ("Сейчас на 5 секунд каретка будет мерцать быстрее\n"); + SetCaretBlinkTime(blinkTime / 20); + sleep(5); + SetCaretBlinkTime (blinkTime_old); + printf ("Каретка снова мерцает как обычно\n"); + sleep(5); +} // позволяет задать время мерцания каретки +void setCursorPos(){ + printf("\n\t- setCursorPos()\n"); + printf("Сейчас курсор установится в нулевую позицию\n"); + INT y = 0, x = 0; + sleep(2); + SetCursorPos(x,y); + printf("Курсор установлен в нулевую позицию\n"); +} // позволяет задать позицию курсора +void systemParametersInfo(){ + printf("\n\t- systemParametersInfo()\n"); + PVOID mouseSpeed; + PVOID mouseSpeed_new = (PVOID) 1; + // Получаем информацию о настройках мыши + SystemParametersInfo(SPI_GETMOUSESPEED, 0, &mouseSpeed, 0); + // Проверяем результат выполнения функции + printf("Текущая скорость мыши: %d\n", mouseSpeed); + printf("Сейчас скорость мыши сильно уменьшится на 3 секунды\n"); + sleep(1); + SystemParametersInfo(SPI_SETMOUSESPEED, 0, mouseSpeed_new, 0); + sleep(3); + SystemParametersInfo(SPI_SETMOUSESPEED, 0, mouseSpeed, 0); + printf("Скорость мыши восстановлена\n"); +} // для установки скорости перемещения курсора + +void main() { setlocale(LC_ALL, "Rus"); - printf("\n----------------------------\n"); - printf("\tИнформация о дисках:\n"); - getLogicalDriveStrings();// + получение букв дисков - getVolumeInformation();// + получение информации о файловой системе выбранного логического диска - printf("\n------------------------------------------\n"); - printf("\tИнформация о файлах и директориях:\n"); - getFileSize("text.txt");// + получает размер файла - findNextFile();// + поиск следующего файла в месте поиска - getWindowsDirectory();// + путь к основному каталогу виндовс - compareFileTime("text.txt", "text2.txt.");// + определение какой из файлов более новый - printf("\n----------------------------\n"); - printf("\tУправляющие функции:\n"); - setLocalTime();// + установить текущую дату и время - setFileAttributes("text3.txt");// + установка файловых атрибутов - createFile();// + создать/открыть файл - CopyFile("text.txt", "text3.txt", 0);// скопировать файл + + printf("--------------------------------------------------"); + printf("\n\t\t\t/ Информация о клавиатуре:\n"); + getKeyboardType(); // + позволяет получить тип клавиатуры и количество функциональных клавиш + getKeyboardState(); // + позволяет получить текущее состояние всех клавиш (клавиатуры и мыши) + + printf("\n--------------------------------------------"); + printf("\n\t\t\t/ Информация о мыши:\n"); + getCursorPos(); // + указывает положение курсора мыши + getCaretBlinkTime(); // + позволяет получить время мерцания каретки + getSystemMetrics(); // + позволяет получить количество кнопок мыши + + printf("\n----------------------------------------------"); + printf("\n\t\t\t/ Управляющие функции:\n"); + // showCursor(); // - показывает и скрывает курсор + // swapMouseButton(); // + позволяет поменять функции кнопок между собой + // setCaretBlinkTime(); // +- позволяет задать время мерцания каретки + // setCursorPos(); // + позволяет задать позицию курсора + // systemParametersInfo(); // + для установки скорости перемещения курсора + printf("\nДля выхода нажмите Enter\n"); + scanf("%c"); } diff --git a/main.exe b/main.exe index 0985ba4..48574dc 100644 Binary files a/main.exe and b/main.exe differ