[Цитировать]

    rezorustavi
  • 2337
  • Стаж: 8 лет 3 месяца
  • Сообщений: 928
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
AZJIO,
aa FileSizesList-x64-icon и FileSizesList-x32-icon при проверки некоторых папок с D диска вылетают, остальные работают. Windows 10 Ltsc x64.
В каких папках заметил вылеты: В одной папке ярлыки, в другой папке файлы с .cpt
Update: И в других некоторых папках с разными фалами вылеты у FileSizesList-x64-icon и FileSizesList-x32-icon.
Видео


Последний раз редактировалось: rezorustavi (2021-11-10 14:22), всего редактировалось 4 раз(а)

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 2 месяца
  • Сообщений: 1285
  • Репутация:126

    [+] [-]
Сделал тему на офсайте, может кто предложит лучший алгоритм. Кому интересно, могут запустить DebugView и получить число иконок, которые получены при генерации списка.

[Цитировать]

    rekshd
  • 19892
  • Стаж: 5 лет 4 месяца
  • Сообщений: 331
  • Репутация:7

    [+] [-]
Проверял всё на Windows 7 SP1 RU x64
Самая стабильная и корректно работающая версия из последних оказалась FileSizesList-x64-CheckBox.exe
Там и нормальная иконка в контекстном меню "Открыть в программе" aa
Версии с иконками прорисовывают отнюдь не все иконки, да и то выборочно
Например, в одной папке иконки файлов exe показываются, а в другой папке нет - и закономерность мне отследить не удалось ...
Во-вторых с иконками действительно программа срабатывает медленнее на треть
Похоже я напрасно Вам подал эту идею по иконкам. Не нужны эти красивости в ущерб функционалу и скорости.
Насчёт удаления через чекбосы - после удаления в меню остаётся надпись на месте удалённых папок "Удалено*"
Подумайте, Может есть смысл после удаления сразу перерисовать\обновить состояние папок.
Чтоб этой надписи "Удалено*" не было ?
Ведь кэш программы на момент удаления уже заполнен и перерисовка произойдёт практичекски моментально.
Повторюсь, версия с чекбосами x64 у меня работает абсолютно стабильно. Огромное Вам Спасибо за эту полезняшку
az
И второй вопрос. Я не смог разобраться - как через ini файл включать и отключать использование чекбосов ...
Думаю, стоит вынести эту настройку в ини и по умолчанию сделать запуск программу без чекбоксов.
Всё-таки это функция для специалистов, а не для обычных пользователей
А спец легко сможет включить использование чекбоксов через ини файл (прочитав help.txt) ai
Добавлено через 8 минут 34 секунды:
AZJIO,
На Win10 иконки покрасивее поэтому можно было бы и без иконок. Ну и вариант пропатчить Shell32.dll своими иконками, взяв из той же Win10
Смысла мне патчить семёрку нету, поскоку усё равно собираюсь преходить на десятку.
Давно пора уже поменять мордочку рабочей операционки. Десятка отзывчивее и по функционалу немного интереснее чем семёрка
Да и некоторые программы уже тока на десятке работают (например, vst от Waves)
Правда собираюсь я это сделать уже полтора года ag

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 2 месяца
  • Сообщений: 1285
  • Репутация:126

    [+] [-]
Сама идея с иконками интересна ради спортивного интереса, так как ранее я уже использовал это в других программах на AutoIt3 и было интересно воспроизвести на PureBasic. В ранее указанной теме мне дали пример с использованием функции SHGetFileInfo но без необходимости указывать точные пути на файл и работает это быстро, как я выше говорил, так как использует кеш (уверенное предположение). Даже специально сделал тестовую версию кеширования в коде на PureBasic и тестовую версию без кеширования и в результате без кеширования отработала чуть быстрее, так как эта версия не создавала бесполезный кеш в коде на PureBasic, так как кеш уже был создан средствами винды при вызове SHGetFileInfo.
Так как с иконками работает медленно, то можно сделать ограничение, например если число элементов менее 10000, то можно задействовать показ иконок. Грубо говоря, если выполнение кода занимает менее пол-секунды, то показывает иконки (можно даже это число вынести в настройки для уменьшения значения для слабых компов). Тестовый пример (без файлов, чисто построение дерева) показывает, что 48000 значков заполняются за 2,5 сек.
Я не смог разобраться - как через ini файл включать и отключать использование чекбосов
я специально указал "было бы", чтобы нельзя было интерпретировать иначе, то есть этого ещё нет.
Например, в одной папке иконки файлов exe показываются, а в другой папке нет - и закономерность мне отследить не удалось
Я в тестовых примерах давно исправил это, проблема если файл иконок не найден, то не происходит переназначение иконки и по умолчанию используется предыдущая, а предыдущая каждый раз разная.
На счёт падения программы, выяснил, что при 37000 файлов на некоторой реальной папке мой старый код с иконками не падает (но возможно при больших значениях падает, как было отписано ранее), а новый с SHGetFileInfo падает на этой папке с 37000 файлов, а в тестовом примере падает при 48000 элементов, то есть есть какая-то зависимость на объём выделенный для построения списка. При этом без иконок отрабатывает на много больше 100 тыс., дальше не проверял.
Там и нормальная иконка в контекстном меню "Открыть в программе"
я могу встроить свои ранее использованные иконки или смесь, часть из виндовых, а те что корявые из своих, получим приемлемое.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 2 месяца
  • Сообщений: 1285
  • Репутация:126

    [+] [-]
Обновил.
Добавлены чекбоксы, в ini-файле cb = 1
Чтобы удалять вместе с пунктом в дереве - в ini-файле idel = 1
Чтобы показать иконки - в ini-файле ico = 500, не более 3000, при 3000 вместо 0,8 сек построение списка 2,8 сек, в 4 раза медленней, причём при больших значениях начинаются глюки списка. Может сделаю 3000 как максималку с невозможностью увеличить болше.
Добавлен пункт "Сначть все галки", значок пока не сделал этому пункту.
Ещё обновил, добавил поддержку мультиязычности через внешний файл.

[Цитировать]

    rezorustavi
  • 2337
  • Стаж: 8 лет 3 месяца
  • Сообщений: 928
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
89692я могу встроить свои ранее использованные иконки или смесь, часть из виндовых, а те что корявые из своих, получим приемлемое.
aa Приветствую. Самый лучший вариант, будут отображаться на любой версии Windows.
Добавлено через 7 минут 9 секунд:
89670Ещё сделал вариант назвал его "с иконками", тоже можете потестировать.
.
Отображение стрелок ярлыков у меня отключены с помощью Winaero Tweaker.
Отличный результат:
.
Update:
И не плохо бы вернуть "Удалить отмеченные":

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 2 месяца
  • Сообщений: 1285
  • Репутация:126

    [+] [-]
И не плохо бы вернуть "Удалить отмеченные":
в ini-файле cb = 1
Отображение стрелок ярлыков у меня отключены с помощью Winaero Tweaker.
отключено видимо в реестре_x64


Последний раз редактировалось: AZJIO (2021-11-11 18:07), всего редактировалось 1 раз

[Цитировать]

    rezorustavi
  • 2337
  • Стаж: 8 лет 3 месяца
  • Сообщений: 928
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
89697в ini-файле cb = 1
aa ay az

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 2 месяца
  • Сообщений: 1285
  • Репутация:126

    [+] [-]
rekshd
Без нарушения лицензии вот пример как изменить иконки
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons]
"3"="C:\\Windows\\folder3.ico"
"4"="C:\\Windows\\folder4.ico"
в данном примере для иконки 3 и 4 указан путь к иконке, которая будет использоваться взамен иконки с тем же номером в Shell32.dll

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 2 месяца
  • Сообщений: 1285
  • Репутация:126

    [+] [-]
Обновил.
Для иконки файлов сделал встроенную, а не из Shel32.dll. Вроде все запросы учтены. Копирование скорее всего не буду делать так как это проще сделать через эксплорер. Я ещё понимаю удаление, т.е. подчистить ненужное расставив галки и скопом удалить, но копирование - не вижу в этом смысла, с тем же успехом открыть эксплорер и перекидывать слева направо папки, размер в данном случае совершенно не критерий.
Можно ещё улучшить в плане вместо "* Удалено" сделать "* Удалено имя_файла", то есть оставить понятную строку что было удалено.

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 4 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
89708
Можно ещё улучшить в плане вместо "* Удалено" сделать "* Удалено имя_файла", то есть оставить понятную строку что было удалено.
Вроде не нужно такое. aa

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    rekshd
  • 19892
  • Стаж: 5 лет 4 месяца
  • Сообщений: 331
  • Репутация:7

    [+] [-]
89708Обновил.
Для иконки файлов сделал встроенную, а не из Shel32.dll. Вроде все запросы учтены. Копирование скорее всего не буду делать так как это проще сделать через эксплорер. Я ещё понимаю удаление, т.е. подчистить ненужное расставив галки и скопом удалить, но копирование - не вижу в этом смысла, с тем же успехом открыть эксплорер и перекидывать слева направо папки, размер в данном случае совершенно не критерий.
Можно ещё улучшить в плане вместо "* Удалено" сделать "* Удалено имя_файла", то есть оставить понятную строку что было удалено.
Натравил на папку с 100 гигами мелких файлов и 3000 вложенных папок из которых около 100-150 корневых папок имеют свои уникальные иконки. Усё это богатство лежит на HDD.
Пересчёт и вывод окна занял несколько секунд (при отмене показа иконок в FileSizesList - ico = 0)
Программа работает безубречно в таком контексте.
aa Отличная работа aa
Конечно жаль, что визуальной привязки к иконкам нет на W7. Ну и ладно. Без них обойдусь.
Я выставил ico = 0 поскоку и в финальной версии программы при ico = 500 в W7 отображаются тока часть иконок
Если когда-нибудь догадайтесь, как сделать в программе отображение иконок как в Explorer, то программа будет вообще супер идеальна.
Ну или я сам освою PB и догадаюсь как это сделать. Правда до освоения PureBasic никак у меня руки не доходят. Уже год как собираюсь ... ag
Естественно, если получится отображение иконок сделать, то результатом поделюсь в этой ветке
PS А c копированием из окна программы - мне кажется это лишнее ...

[Цитировать]

    UserX
  • 667
  • Стаж: 9 лет
  • Сообщений: 795
  • Репутация:32

    [+] [-]
89711Уже год как собираюсь ...
Просто в году завтрашних дней - аж 365... :)

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 2 месяца
  • Сообщений: 1285
  • Репутация:126

    [+] [-]
в W7 отображаются тока часть иконок
покажи скрин, мне интересно что не отображается, может на Win7 эта функция работает по-другому. И не исключаю, что могу попробовать улучшить свою старую версию получения иконок через запрос иконки в реестре и сравнить потом скорость по времени и ограничения по количеству.
Если когда-нибудь догадайтесь, как сделать в программе отображение иконок как в Explorer, то программа будет вообще супер идеальна.
А что там догадываться? В папке лежит desktop.ini, который определяет значок папки. Эти все обработки требуют время. Эксплорер не вычисляет размер папок, он вычисляет их отображение только для текущей, которую открыл и поэтому он не тормозит, а заставь его обсчитать 100 гиг мелких файлов или делать это каждый раз при запуске и будешь плеваться в него и заменишь его другим.
Вот у меня иконки отображаются точно

[Цитировать]

    rekshd
  • 19892
  • Стаж: 5 лет 4 месяца
  • Сообщений: 331
  • Репутация:7

    [+] [-]
Если когда-нибудь догадайтесь, как сделать в программе отображение иконок как в Explorer, то программа будет вообще супер идеальна.
А что там догадываться? В папке лежит desktop.ini, который определяет значок папки. Эти все обработки требуют время. Эксплорер не вычисляет размер папок, он вычисляет их отображение только для текущей, которую открыл и поэтому он не тормозит, а заставь его обсчитать 100 гиг мелких файлов или делать это каждый раз при запуске и будешь плеваться в него и заменишь его другим.
Ну да, у меня в этой 100гиговой папке 111 корневых папок и каждая имеет свой уникальный значок (сделано для каждой папки через сладкую парочку - файлами desktop.ini и Icon.ico)
Дак вот - сам эксплорер при первом открытии этой папки в течении сессии слегка зависает - отображение папки занимает пару-тройку секунд. Как я понимаю это заполняется кэш иконок. В следующие разы эти папки уже отображаются моментально.
Иконки мне нужны, чтоб моментально найти нужную папку - я визуал ...
Само собой, если сделать отображение таких иконок в FileSizesList, то загрузка займёт не меньшее время, чем непосредственно в проводнике.
А насчёт файлов - минут через 5 сделаю скрин - нужно комп перегрузить

Страница 3 из 7


Показать сообщения:    

Текущее время: 26-Апр 12:30

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы