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