|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
|
Файловый менеджер на чистом С + WinAPI17.02.2014, 21:59. Показов 5072. Ответов 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 | |
|
Файловый менеджер
Файловый менеджер Файловый менеджер на Си Файловый менеджер Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|