оли атрибути файлу або дескриптори безпеки змінюються. Для каталогу, структура визначає, коли каталог створювався. Якщо лежить в основі файлова система не підтримує останнім часом записи, цей член структури дорівнює нулю.
§ nFileSizeHigh
Старше подвійне слово (DWORD) значення розміру файлу, в байтах. Це значення дорівнює нулю, якщо розмір файлу не більше, ніж визначає його MAXDWORD.
§ nFileSizeLow
Молодше подвійне слово (DWORD) значення розміру файлу, в байтах.
§ cFileName
Символьний рядок з нулем в кінці, яка встановлює ім'я файлу.
Для того, щоб копіювати, переміщати, перейменовувати видаляти файли в середовищі Windows мовою C ++ існує функція SHFileOperation, але для її реалізації, потрібна структура SHFILEOPSTRUCT, яка має наступний синтаксис: typedef struct _SHFILEOPSTRUCT {
HWND hwnd; wFunc; pFrom; pTo; _FLAGS fFlags; fAnyOperationsAborted; hNameMappings; lpszProgressTitle;
} SHFILEOPSTRUCT, * LPSHFILEOPSTRUCT;
5. Розробка програмного продукту
Насамперед, варто почати з того, що програмний продукт розроблявся як консольний додаток, тобто без графічних елементів.
Моє додаток складається з 8 функцій (включаючи головну - int_main) і 1 клас. Функції наступні:
· enum ConsoleColor і void SetColor - відповідають за зміну тексту в консолі. Функція ConsoleColor служить для зручної зміни кольору, а SetColor встановлює колір, завдяки SetConsoleTextAttribute ().
· DWORDLONG gfs - ця функція, визначає розмір файлу або папки, використовуючи структуру WIN32_FIND_DATA і функцію FindFirstData (), шляхом складання (nFileSizeHigh * (MAXDWORD + 1)) + nFileSizeLow.
· void MoveFolder - дана функція переміщує файли, або перейменовує їх. Вона використовує структуру SHFILEOPSTRUCT і функцію SHFileOperation, в яку вона передає в параметр wFunc - FO_MOVE (перемістити/перейменувати об'єкт), в pFrom - шлях до об'єкта, в pTo - шлях, в який слід перемістити/перейменувати об'єкт.
· bool DirExists - наступна функція повертає логічну одиницю, якщо зазначена директорія або файл існують.
· wchar_t * un - функція, яка повертає ім'я користувача комп'ютера. В її основі лежить функція GetUserName ();
· bool IfFileExistsAndIsNotEmpty - як видно з назви, функція визначає порожній чи файл. В її основі лежить функція GetFileAttributesW ().
Клас outclass був створений з метою організувати виведення команд у файл. Даний
клас має 2 методу: startout (string filname) і endout (). Перший метод відповідає за створення файлу, і перенаправлення виводу в нього. Також варто відзначити, що в якості аргументу передається назва файлу. Другий метод служить для припинення виводу у файл, і відновлення виводу на екран.
При першому запуску, змінюється колір консолі, і змінюється кодування для підтримки та правильного відображення кирилиці (використовуючи chcp). Потім за допомогою функції SetCurrentDirectory (), у програмі встановлюється домашня директорія. Після, ініціалізується об'єкт класу outclass і вектор рядків (типу string), в який буде заноситися кожне слово, що введеться в якості команди в термінал.
Всі меню програми заснована на нескінченному циклі while, умова виходу з якого наступне: якщо користувач введе exit, то ми вийдемо з циклу і отже програма завершиться, в інших же випадках або запуститься потрібний нам ділянку коду (ls , cd, cat, comm, і т.д.), якщо перший елемент вектора рядків співпаде з назвою команди, або видасть повідомлення про помилку, в якому буде сказано, що даної програми не існує. На початку циклу виводиться рядок, в якій позначено шлях поточній директорії та ім'я користувача системи, як у системі OC Linux. Саме сюди, нам і пропонується ввести команду. Після виконання тієї чи іншої ділянки коду, який відповідає за команду, виконується оператор continue, що перекидає нас в самий початок циклу.
Висновок
unix програмний емулятор windows
В результаті виконання курсової роботи була вивчена файлова система ОС Unix, її структура і робота основних команд, до яких відносяться ls, cmp, comm, а також їх ключів. Крім того вивчена робота аналогів цих команд в середовищі Windows. Потім розроблений емулятор роботи командного процесора ОС Unix в середовищі ОС Windows. Він включав в себе наступні команди:
- ls виведення списку файлів.
- Cmp побайтное порівняння двох файлів
- Comm...