Compare commits
No commits in common. "l2" and "master" have entirely different histories.
8
.idea/APD_L1.iml
generated
8
.idea/APD_L1.iml
generated
@ -1,2 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<module classpath="CIDR" type="CPP_MODULE" version="4" />
|
<module type="CPP_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
6
.idea/encodings.xml
generated
6
.idea/encodings.xml
generated
@ -1,6 +0,0 @@
|
|||||||
<?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 +0,0 @@
|
|||||||
Hello, World!
|
|
244
main.c
244
main.c
@ -1,11 +1,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
// Лабораторная работа № 2 - устройства ручного ввода
|
|
||||||
|
|
||||||
// --- Информация о клавиатуре
|
|
||||||
int getLogicalDriveStrings() {
|
int getLogicalDriveStrings() {
|
||||||
printf("- GetLogicalDriveStrings:\n");
|
printf("- GetLogicalDriveStrings:\n");
|
||||||
char buffer[4096]; // ñàì áóôåð äëÿ ñòðîêè
|
char buffer[4096]; // ñàì áóôåð äëÿ ñòðîêè
|
||||||
@ -46,13 +42,13 @@ int getVolumeInformation() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ---
|
// ---
|
||||||
long getFileSize(LPCSTR path) {
|
long getFileSize() {
|
||||||
printf("- GetFileSize:\n");
|
printf("- GetFileSize:\n");
|
||||||
HANDLE hFile;
|
HANDLE hFile;
|
||||||
DWORD fileSize;
|
DWORD fileSize;
|
||||||
unsigned long structLargeInt;
|
unsigned long structLargeInt;
|
||||||
// Îòêðûòèå ôàéëà
|
// Îòêðûòèå ôàéëà
|
||||||
hFile = CreateFile(path,
|
hFile = CreateFile((LPCSTR) "../text.txt",
|
||||||
GENERIC_READ,
|
GENERIC_READ,
|
||||||
FILE_SHARE_READ,
|
FILE_SHARE_READ,
|
||||||
NULL,
|
NULL,
|
||||||
@ -105,13 +101,13 @@ int getWindowsDirectory() {
|
|||||||
printf("Âèíäîñâ ïàïêà òóò: %s\n", windowsDir);
|
printf("Âèíäîñâ ïàïêà òóò: %s\n", windowsDir);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int compareFileTime(LPCSTR path_1, LPCSTR path_2) {
|
int compareFileTime() {
|
||||||
printf("- CompareFileTime:\n");
|
printf("- CompareFileTime:\n");
|
||||||
FILETIME fileTime1;
|
FILETIME fileTime1;
|
||||||
FILETIME fileTime2;
|
FILETIME fileTime2;
|
||||||
|
|
||||||
// ïåðâûé ôàéë
|
// ïåðâûé ôàéë
|
||||||
HANDLE file1 = CreateFile(path_1,
|
HANDLE file1 = CreateFile((LPCSTR) "../text.txt",
|
||||||
GENERIC_READ,
|
GENERIC_READ,
|
||||||
FILE_SHARE_READ,
|
FILE_SHARE_READ,
|
||||||
NULL,
|
NULL,
|
||||||
@ -126,7 +122,7 @@ int compareFileTime(LPCSTR path_1, LPCSTR path_2) {
|
|||||||
CloseHandle(file1);
|
CloseHandle(file1);
|
||||||
|
|
||||||
// Îòêðûâàåì âòîðîé ôàéë
|
// Îòêðûâàåì âòîðîé ôàéë
|
||||||
HANDLE file2 = CreateFile(path_2,
|
HANDLE file2 = CreateFile((LPCSTR) "../text2.txt",
|
||||||
GENERIC_READ,
|
GENERIC_READ,
|
||||||
FILE_SHARE_READ,
|
FILE_SHARE_READ,
|
||||||
NULL,
|
NULL,
|
||||||
@ -161,7 +157,7 @@ int setLocalTime() {
|
|||||||
|
|
||||||
// Çàïîëíåíèå ñòðóêòóðû SYSTEMTIME äàííûìè òåêóùåãî âðåìåíè
|
// Çàïîëíåíèå ñòðóêòóðû SYSTEMTIME äàííûìè òåêóùåãî âðåìåíè
|
||||||
GetLocalTime(&systemTime);
|
GetLocalTime(&systemTime);
|
||||||
printf("Дата и время ДО изменения: %02d-%02d-%d %02d:%02d:%02d\n",
|
printf("\nÄàòà è âðåìÿ ÄÎ èçìåíåíèÿ: %02d-%02d-%d %02d:%02d:%02d\n",
|
||||||
systemTime.wDay, systemTime.wMonth, systemTime.wYear,
|
systemTime.wDay, systemTime.wMonth, systemTime.wYear,
|
||||||
systemTime.wHour, systemTime.wMinute, systemTime.wSecond);
|
systemTime.wHour, systemTime.wMinute, systemTime.wSecond);
|
||||||
|
|
||||||
@ -176,42 +172,50 @@ int setLocalTime() {
|
|||||||
SetLocalTime(&systemTime);
|
SetLocalTime(&systemTime);
|
||||||
printf("Âðåìÿ óñïåøíî èçìåíåíî\n");
|
printf("Âðåìÿ óñïåøíî èçìåíåíî\n");
|
||||||
|
|
||||||
printf("Дата и время ПОСЛЕ изменения: %02d-%02d-%d %02d:%02d:%02d\n",
|
printf("\nÄàòà è âðåìÿ ÏÎÑËÅ èçìåíåíèÿ: %02d-%02d-%d %02d:%02d:%02d\n",
|
||||||
systemTime.wDay, systemTime.wMonth, systemTime.wYear,
|
systemTime.wDay, systemTime.wMonth, systemTime.wYear,
|
||||||
systemTime.wHour, systemTime.wMinute, systemTime.wSecond);
|
systemTime.wHour, systemTime.wMinute, systemTime.wSecond);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
void getFileAttributes(LPCSTR path){
|
int setFileAttributes() {
|
||||||
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");
|
printf("- SetFileAttributes:\n");
|
||||||
// Góòü ê ôàéëó
|
// Góòü ê ôàéëó
|
||||||
|
LPCWSTR filePath = L"..\\text3.txt";
|
||||||
// Ñáðàñûâàåì àòðèáóòû ôàéëà
|
// Ñáðàñûâàåì àòðèáóòû ôàéëà
|
||||||
SetFileAttributes(path, (DWORD) NULL);
|
SetFileAttributes((LPCSTR) filePath, (DWORD) NULL);
|
||||||
// Òåêóùèå àòðèáóòû ôàéëà
|
// Òåêóùèå àòðèáóòû ôàéëà
|
||||||
|
DWORD fileAttributes = GetFileAttributes((LPCSTR) filePath);
|
||||||
printf("\tÒåêóùèå àòðèáóòû ôàéëà ÄÎ çàìåíû: ");
|
printf("\tÒåêóùèå àòðèáóòû ôàéëà ÄÎ çàìåíû: ");
|
||||||
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");
|
||||||
|
|
||||||
// Óñòàíàâëèâàåì àòðèáóòû ôàéëà
|
// Óñòàíàâëèâàåì àòðèáóòû ôàéëà
|
||||||
DWORD newFileAttributes = FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_DIRECTORY;
|
DWORD newFileAttributes = FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_DIRECTORY |fileAttributes;
|
||||||
BOOL result = SetFileAttributes( path, (DWORD) newFileAttributes);
|
BOOL result = SetFileAttributes((LPCSTR) filePath, (DWORD) newFileAttributes);
|
||||||
|
|
||||||
|
fileAttributes = GetFileAttributes((LPCSTR) filePath);
|
||||||
|
|
||||||
printf("\tÒåêóùèå àòðèáóòû ôàéëà ÏÎÑËÅ çàìåíû: ");
|
printf("\tÒåêóùèå àòðèáóòû ôàéëà ÏÎÑËÅ çàìåíû: ");
|
||||||
|
if (fileAttributes & FILE_ATTRIBUTE_READONLY) {
|
||||||
getFileAttributes(path);
|
printf("\n- Read-only");
|
||||||
|
}
|
||||||
|
if (fileAttributes & FILE_ATTRIBUTE_HIDDEN) {
|
||||||
|
printf("\n- Hidden");
|
||||||
|
}
|
||||||
|
if (fileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
|
||||||
|
printf("\n- Directory");
|
||||||
|
}// è òàê äàëåå äëÿ äðóãèõ àòðèáóòîâ ôàéëà...
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -253,148 +257,46 @@ int createFile() {
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
void copyFile(const char* sourceFile, const char* destinationFile) {
|
||||||
|
printf("- CopyFile:\n");
|
||||||
|
|
||||||
// --- Информация о клавиатуре
|
FILE* source = fopen(sourceFile, "rb");
|
||||||
void getKeyboardType(){
|
FILE* destination = fopen(destinationFile, "wb");
|
||||||
printf("\t- getKeyboardType()\n");
|
|
||||||
BYTE typeValue;
|
// Êîïèðóåì ñîäåðæèìîå ôàéëà
|
||||||
typeValue = GetKeyboardType(0);
|
char buffer[1024];
|
||||||
printf("- Информация о клавиатуре:\n");
|
size_t bytesRead;
|
||||||
switch (typeValue) {
|
while ((bytesRead = fread(buffer, 1, sizeof(buffer), source)) > 0) {
|
||||||
case 1:
|
fwrite(buffer, 1, bytesRead, destination);
|
||||||
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};
|
|
||||||
|
|
||||||
// Получение состояния всех клавиш
|
// Çàêðûâàåì ôàéëû
|
||||||
GetKeyboardState(keyState);
|
fclose(source);
|
||||||
|
fclose(destination);
|
||||||
|
|
||||||
// Вывод номеров нажатых клавиш в консоль
|
printf("Ôàéë óñïåøíî ñêîïèðîâàí.\n");
|
||||||
printf("На момент запуска программы были нажаты клавиши под номерами:\n");
|
}
|
||||||
for (int i = 0; i < 256; i++) {
|
|
||||||
if (keyState[i] & 0x80) {
|
|
||||||
printf("Клавиша %d\n", i);
|
|
||||||
}
|
int main() {
|
||||||
}
|
setlocale(LC_ALL, "Rus");
|
||||||
} // позволяет получить текущее состояние всех клавиш (клавиатуры и мыши)
|
printf("\n----------------------------\n");
|
||||||
// --- Информация о мыши
|
printf("\tÈíôîðìàöèÿ î äèñêàõ:\n");
|
||||||
void getCursorPos(){
|
// getLogicalDriveStrings();// + ïîëó÷åíèå áóêâ äèñêîâ
|
||||||
printf("\t- getCursorPos()\n");
|
// getVolumeInformation();// + ïîëó÷åíèå èíôîðìàöèè î ôàéëîâîé ñèñòåìå âûáðàííîãî ëîãè÷åñêîãî äèñêà
|
||||||
POINT cp;
|
printf("\n------------------------------------------\n");
|
||||||
GetCursorPos(&cp);
|
printf("\tÈíôîðìàöèÿ î ôàéëàõ è äèðåêòîðèÿõ:\n");
|
||||||
printf("Текущая позиция курсора: (%ld, %ld)\n", cp.x, cp.y);
|
// getFileSize();// + ïîëó÷àåò ðàçìåð ôàéëà
|
||||||
} // указывает положение курсора мыши
|
// findNextFile();// + ïîèñê ñëåäóþùåãî ôàéëà â ìåñòå ïîèñêà
|
||||||
void getCaretBlinkTime(){
|
// getWindowsDirectory();// + ïóòü ê îñíîâíîìó êàòàëîãó âèíäîâñ
|
||||||
printf("\n\t- getCaretBlinkTime()\n");
|
// compareFileTime();// + îïðåäåëåíèå êàêîé èç ôàéëîâ áîëåå íîâûé
|
||||||
printf("Время мерцания каретки - %dмс\n", GetCaretBlinkTime());
|
printf("\n----------------------------\n");
|
||||||
} // позволяет получить время мерцания каретки
|
printf("\tÓïðàâëÿþùèå ôóíêöèè:\n");
|
||||||
void getSystemMetrics(){
|
// setLocalTime();// + óñòàíîâèòü òåêóùóþ äàòó è âðåìÿ
|
||||||
printf("\n\t- getSystemMetrics()\n");
|
// setFileAttributes();// + óñòàíîâêà ôàéëîâûõ àòðèáóòîâ
|
||||||
printf("Количество кнопок мыши: %d\n", GetSystemMetrics(SM_CMOUSEBUTTONS));
|
// createFile();// ñîçäàòü/îòêðûòü ôàéë
|
||||||
} // позволяет получить количество кнопок мыши
|
const char* sourceFile = ".//text.txt";
|
||||||
// --- Управляющие функции
|
const char* destinationFile = ".//text33.txt";
|
||||||
void showCursor(){
|
CopyFile(".//text.txt", ".//text3.txt", 0);// ñêîïèðîâàòü ôàéë
|
||||||
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("--------------------------------------------------");
|
|
||||||
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");
|
|
||||||
}
|
}
|
||||||
|
@ -18,4 +18,4 @@ text.txt
|
|||||||
text.txt
|
text.txt
|
||||||
text.txt
|
text.txt
|
||||||
text.txt
|
text.txt
|
||||||
text.txttexttext.txtывыфвывыавsd
|
text.txttexttext.txtывыфвывыав
|
21
text3.txt
21
text3.txt
@ -1,21 +0,0 @@
|
|||||||
;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
|
|
Loading…
Reference in New Issue
Block a user