|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
|
Файловый менеджер на чистом С + WinAPI17.02.2014, 21:59. Показов 4970. Ответов 28
Метки нет (Все метки)
Уважаемые форумчане)
Прошу у Вас помощи в написании программы, которая должна просматривать содержимое и навигация по всем локальным дискам и папкам, получать информацию про диск или папку, а именно размер, временные характеристики (время создания, редактирования), количество подкаталогов и файлов, а также по возможности всё остальное, но это уже не обязательно. Также программа должна обновлять информацию о папке/диске при изменении её/его содержании и выводить соответствующее сообщение. Программа должна иметь графическую оболочку. Кстати программа должна быть на чистом С с WinAPI. Уйдя в предисторию скажу что у меня уже был опыт написания программы на ассемблере, которая читает даты создание, редактирования и открытия файла, там тоже был WinAPI. В той программе я сначала использовал функцию CreateFile для получения доступу к файлу, указывал что делать с файлом, читать с него или писать в него и т. д. Затем вызывалась функция GetFileInformationByHandle для получения свойству файла. Потом вызывались функции FileTimeToLocalFileTime и FileTimeToSystemTime для преобразования времени в адекватный вид, потом вывод на экран. Прочитав информацию про функцию CreateFile я обнаружил, что её также можно использовать для открытия директории. Собственно несколько вопросов: 1) Стоит ли использовать функцию CreateFile или всё-же есть альтернатива по-лучше, если эта вдруг чем-то плоха для папок или дисков? 2) Какой аналог функции GetFileInformationByHandle есть для папок? 3) Одинакова ли работа с папкой и диском? 4) Есть ли какая-то функция или параметр к какой-то функции для подсчёта вложенных файлов и папок или нужно заходить в каждую папку отдельно и циклом считать кол-во файлов и папок?
0
|
|
| 17.02.2014, 21:59 | |
|
Ответы с готовыми решениями:
28
Файловый менеджер через winapi Автозагрузка на чистом WINAPI Файловый менеджер |
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
| 27.02.2014, 23:05 | |
|
qwertun, правильно препод сказал, вы же API изучаете - т.е. низкий уровень - когда всё как на ладони и должны уметь с этим разбираться, а не пользоваться всякими VisualStudio примочками.
Окна без файла ресурсов Вот вам топик, прежде чем я сделал то о чём речь - было так же очень много тухлых помидоров со стороны недобросовестных "недопрограммистов" =) Наслаждайтесь готовым кодом. Только раз уж вас обучает такой крутой препод, тогда готовьтесь что дальше - будет тяжелее, поэтому советую разобрать код по косточкам сразу, чтоб потом не было "не обратил внимания" =)
0
|
|
|
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
|
|
| 01.03.2014, 08:07 | |
|
я посмотрел , код сделан офигено, и там все понятно , попробуи там поинтересоватся , в чем он компилирует
0
|
|
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
| 02.03.2014, 16:15 | |
|
qwertun, держите линк на пример ListView в VS2005.
Процедура обработки дочернего окна (ListView и Edit)
0
|
|
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
|
| 03.03.2014, 11:42 [ТС] | |
|
Izual, я с выше приведённой Вами темы взял проект и скомпилировал, всё прошло успешно, но линковщик сказал следущее: "LINK : warning LNK4199: параметр /DELAYLOAD:OleAcc.dll игнорируется; не найдены операции импорта из OleAcc.dll"
Хотелось бы узнать что это такое.
0
|
|
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
| 03.03.2014, 16:00 | |
|
qwertun, пробовали гуглить?.. видимо нет.
Вы не подключили к проэкту библиотеки. Project Properties -> Linker -> Input -> Additional dependecies: gdi32.lib comctl32.lib И ещё: Configuration Properties -> General: Use MFC in static library. Use multibyte character set
0
|
|
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
||||||||||||||||||||||||||||||||||||||||||||||||
| 10.03.2014, 17:32 [ТС] | ||||||||||||||||||||||||||||||||||||||||||||||||
Результат программы 9 Подскажите плз в чём ошибка Добавлено через 6 минут Я понял! Прога считает кол-во папок и файлов в папке, к которой указывает путь, а вложенные на считает! Баг проги в том, что если файлов и папок 7, то она выведет 9 (как в конкретном случае), если реально 42, прога выведет 44 и т.д. Добавлено через 1 минуту Как найти отдельно кол-во файлов и папок? Как их разделять между собой? Добавлено через 3 минуты Одну проблему я нашёл! Откуда-то берутся то ли файлы то ли папки с именами "." и ".." Это типо переход на папку вверх и в корень диска? Добавлено через 3 минуты Еще одна есть! Для папок нужно писать
Добавлено через 7 минут прошу прощения за дезинформацию
Добавлено через 8 минут Вобщем вот код, который считает кол-во папок и файлов в папке по указанному пути. Единственно НО прога не считает вложенные файлы и папки.
Если использовать FindFirstFileEx то результат такой-же.
Добавлено через 17 минут Кстати я обнаружил, что оба эти кода в некоторых случаях считают папку за файл (!). Выкладываю код, который нормально работает
Есди может кто-то не знает или забыл, код
0
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
||||||
| 19.03.2014, 11:26 [ТС] | ||||||
|
Уважаемые форумчане, если Вы еще не забили на эту тему, то прошу помощи.
Я попытался сделать функцию для подсчёта количества вложенных файлов. Алгоритм, по которому я пытался написать функцию, которая кстати рекурсивная: в окне файлового менеджера кликаем на необходимую папку и вызывается функция, которая в папке на которую кликнули если находит файл делает +1 к кол-ву файлов, а если папку, то сама себя-же вызывает, а как аргументы передаёт переменную hStaticTmp нужную для передачи предыдущей папке при первом вызове функции, название выбраной папки / найденной функцией, небольшую чекалку которую я добавил для проверки условия чем была вызвана функция кликом мышки или собою же, кол-во файлов, кол-во папок, размер папки, предыдущая папка. Короче говоря, функция работает не так как хотелось бы. Проблема в переменной показывающей предыдущую папку. Например: есть несколько папок в папке D:\test\1\11 D:\test\1\12 И вот что мы имеем: Текущая папка D:\test (на неё кликнули мышкой) Предыдущая папка NULL ----- Текущая папка D:\test\1 (функция нашла папку и вызвала сама себя перейдя в эту папку) Предыдущая папка D:\test ----- Текущая папка D:\test\1\11 (функция нашла папку и вызвала сама себя перейдя в эту папку) Предыдущая папка D:\test\1 ----- А вот тут проблемка! Текущая папка D:\test\1\12 (по идее должна быть) Текущая папка D:\test\1\11\12 (как в программе) Предыдущая папка D:\test\1\11 Вобщем именно проблема с возвратом в предыдущую папку. Люди добрые, помогите) Кидаю код
0
|
||||||
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
|
| 14.04.2014, 10:20 [ТС] | |
|
Функцию я написал для подсчёта количества файлов и папок, но с ней возникла небольшая проблема.
Чтоб не писать всё опять просто кину ссылку Поиск папок с помощью FindFirstFile\FindNextFile Надейсь на Вашу помощь
0
|
|
| 14.04.2014, 10:20 | |
|
Файловый менеджер
Файловый менеджер Файловый менеджер на Си Файловый менеджер Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|