Compare commits

..

2 Commits
master ... l2

Author SHA1 Message Date
Суслов Роман
8b58ef014d L2 - v1.0 2023-10-07 17:43:11 +03:00
Суслов Роман
b9aa0294f6 v1.1 2023-09-28 15:08:33 +03:00
7 changed files with 199 additions and 79 deletions

8
.idea/APD_L1.iml generated
View File

@ -1,8 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="CPP_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
<module classpath="CIDR" type="CPP_MODULE" version="4" />

6
.idea/encodings.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/main.c" charset="windows-1251" />
</component>
</project>

1
example.txt Normal file
View File

@ -0,0 +1 @@
Hello, World!

238
main.c
View File

@ -1,7 +1,11 @@
#include <stdio.h>
#include <windows.h>
#include <locale.h>
#include <unistd.h>
// Лабораторная работа № 2 - устройства ручного ввода
// --- Информация о клавиатуре
int getLogicalDriveStrings() {
printf("- GetLogicalDriveStrings:\n");
char buffer[4096]; // ñàì áóôåð äëÿ ñòðîêè
@ -42,13 +46,13 @@ int getVolumeInformation() {
}
// ---
long getFileSize() {
long getFileSize(LPCSTR path) {
printf("- GetFileSize:\n");
HANDLE hFile;
DWORD fileSize;
unsigned long structLargeInt;
// Îòêðûòèå ôàéëà
hFile = CreateFile((LPCSTR) "../text.txt",
hFile = CreateFile(path,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
@ -101,13 +105,13 @@ int getWindowsDirectory() {
printf("Âèíäîñâ ïàïêà òóò: %s\n", windowsDir);
return 0;
}
int compareFileTime() {
int compareFileTime(LPCSTR path_1, LPCSTR path_2) {
printf("- CompareFileTime:\n");
FILETIME fileTime1;
FILETIME fileTime2;
// ïåðâûé ôàéë
HANDLE file1 = CreateFile((LPCSTR) "../text.txt",
HANDLE file1 = CreateFile(path_1,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
@ -122,7 +126,7 @@ int compareFileTime() {
CloseHandle(file1);
// Îòêðûâàåì âòîðîé ôàéë
HANDLE file2 = CreateFile((LPCSTR) "../text2.txt",
HANDLE file2 = CreateFile(path_2,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
@ -157,7 +161,7 @@ int setLocalTime() {
// Çàïîëíåíèå ñòðóêòóðû SYSTEMTIME äàííûìè òåêóùåãî âðåìåíè
GetLocalTime(&systemTime);
printf("\nÄàòà è âðåìÿ ÄÎ èçìåíåíèÿ: %02d-%02d-%d %02d:%02d:%02d\n",
printf("Дата и время ДО изменения: %02d-%02d-%d %02d:%02d:%02d\n",
systemTime.wDay, systemTime.wMonth, systemTime.wYear,
systemTime.wHour, systemTime.wMinute, systemTime.wSecond);
@ -172,50 +176,42 @@ int setLocalTime() {
SetLocalTime(&systemTime);
printf("Âðåìÿ óñïåøíî èçìåíåíî\n");
printf("\nÄàòà è âðåìÿ ÏÎÑËÅ èçìåíåíèÿ: %02d-%02d-%d %02d:%02d:%02d\n",
printf("Дата и время ПОСЛЕ изменения: %02d-%02d-%d %02d:%02d:%02d\n",
systemTime.wDay, systemTime.wMonth, systemTime.wYear,
systemTime.wHour, systemTime.wMinute, systemTime.wSecond);
return 0;
}
int setFileAttributes() {
void getFileAttributes(LPCSTR path){
DWORD fileAttributes = GetFileAttributes(path);
if (fileAttributes & FILE_ATTRIBUTE_READONLY) {
printf("\n/Read-only");
}
if (fileAttributes & FILE_ATTRIBUTE_HIDDEN) {
printf("\n/Hidden");
}
if (fileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
printf("\n/Directory");
}// и так далее для других атрибутов файла...
printf("\n");
}
int setFileAttributes(LPCSTR path) {
printf("- SetFileAttributes:\n");
// Góòü ê ôàéëó
LPCWSTR filePath = L"..\\text3.txt";
// Ñáðàñûâàåì àòðèáóòû ôàéëà
SetFileAttributes((LPCSTR) filePath, (DWORD) NULL);
SetFileAttributes(path, (DWORD) NULL);
// Òåêóùèå àòðèáóòû ôàéëà
DWORD fileAttributes = GetFileAttributes((LPCSTR) filePath);
printf("\tÒåêóùèå àòðèáóòû ôàéëà ÄÎ çàìåíû: ");
if (fileAttributes & FILE_ATTRIBUTE_READONLY) {
printf("\n- Read-only");
}
if (fileAttributes & FILE_ATTRIBUTE_HIDDEN) {
printf("\n- Hidden");
}
if (fileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
printf("\n- Directory");
}// è òàê äàëåå äëÿ äðóãèõ àòðèáóòîâ ôàéëà...
printf("\n");
getFileAttributes(path);
// Óñòàíàâëèâàåì àòðèáóòû ôàéëà
DWORD newFileAttributes = FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_DIRECTORY |fileAttributes;
BOOL result = SetFileAttributes((LPCSTR) filePath, (DWORD) newFileAttributes);
fileAttributes = GetFileAttributes((LPCSTR) filePath);
DWORD newFileAttributes = FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_DIRECTORY;
BOOL result = SetFileAttributes( path, (DWORD) newFileAttributes);
printf("\tÒåêóùèå àòðèáóòû ôàéëà ÏÎÑËÅ çàìåíû: ");
if (fileAttributes & FILE_ATTRIBUTE_READONLY) {
printf("\n- Read-only");
}
if (fileAttributes & FILE_ATTRIBUTE_HIDDEN) {
printf("\n- Hidden");
}
if (fileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
printf("\n- Directory");
}// è òàê äàëåå äëÿ äðóãèõ àòðèáóòîâ ôàéëà...
printf("\n");
getFileAttributes(path);
return 0;
}
@ -257,46 +253,148 @@ int createFile() {
return 0;
}
void copyFile(const char* sourceFile, const char* destinationFile) {
printf("- CopyFile:\n");
FILE* source = fopen(sourceFile, "rb");
FILE* destination = fopen(destinationFile, "wb");
// Êîïèðóåì ñîäåðæèìîå ôàéëà
char buffer[1024];
size_t bytesRead;
while ((bytesRead = fread(buffer, 1, sizeof(buffer), source)) > 0) {
fwrite(buffer, 1, bytesRead, destination);
// --- Информация о клавиатуре
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};
// Çàêðûâàåì ôàéëû
fclose(source);
fclose(destination);
// Получение состояния всех клавиш
GetKeyboardState(keyState);
printf("Ôàéë óñïåøíî ñêîïèðîâàí.\n");
// Вывод номеров нажатых клавиш в консоль
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");
} // для установки скорости перемещения курсора
int main() {
void main() {
setlocale(LC_ALL, "Rus");
printf("\n----------------------------\n");
printf("\tÈíôîðìàöèÿ î äèñêàõ:\n");
// getLogicalDriveStrings();// + ïîëó÷åíèå áóêâ äèñêîâ
// getVolumeInformation();// + ïîëó÷åíèå èíôîðìàöèè î ôàéëîâîé ñèñòåìå âûáðàííîãî ëîãè÷åñêîãî äèñêà
printf("\n------------------------------------------\n");
printf("\tÈíôîðìàöèÿ î ôàéëàõ è äèðåêòîðèÿõ:\n");
// getFileSize();// + ïîëó÷àåò ðàçìåð ôàéëà
// findNextFile();// + ïîèñê ñëåäóþùåãî ôàéëà â ìåñòå ïîèñêà
// getWindowsDirectory();// + ïóòü ê îñíîâíîìó êàòàëîãó âèíäîâñ
// compareFileTime();// + îïðåäåëåíèå êàêîé èç ôàéëîâ áîëåå íîâûé
printf("\n----------------------------\n");
printf("\tÓïðàâëÿþùèå ôóíêöèè:\n");
// setLocalTime();// + óñòàíîâèòü òåêóùóþ äàòó è âðåìÿ
// setFileAttributes();// + óñòàíîâêà ôàéëîâûõ àòðèáóòîâ
// createFile();// ñîçäàòü/îòêðûòü ôàéë
const char* sourceFile = ".//text.txt";
const char* destinationFile = ".//text33.txt";
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");
}

BIN
main.exe Normal file

Binary file not shown.

View File

@ -18,4 +18,4 @@ text.txt
text.txt
text.txt
text.txt
text.txttexttext.txtывыфвывыав
text.txttexttext.txtывыфвывыавsd

View File

@ -0,0 +1,21 @@
;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan
;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan
;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan
;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan
;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan
;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsanss
;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan
;lkadsnf;lkjsd;cjsa;dijwaijfiaejfaiosjfs;lknv;lsan
text.txttext.txttext.txt
text.txttext.txttext.txttext.txtsss
text.txttext.txttext.txttext.txt
text.txttext.txttext.txt
text.txtss
text.txt
text.txt
text.txt
text.txttexttext.txtss