Страница 3 из 12
Добавлено: Вс апр 19, 2015 23:54
LonerD
Flasher писал(а):Пусто.
AHK последняя? (я юникодовую использую, хотя должна и с Ansi работать)
http://ahkscript.org/download/
Тогда не знаю.
Теоретически 524 - снимает выделение, 330 . Mode выделяет файлы/каталоги, 2021 - копирует в буфер обмена имена с путями, потом содержимое буфера передаётся в переменную FileList. (затем в списке фильтруются лишние строки, он передаётся в буфер, и из буфера загружается выделение).
Попробуй ещё между SendMessage-коммандами вставить паузы...
Sleep, 200 (или другое число в миллисекундах).
LonerD писал(а):А что мешает сделать?
[s]Незнание как это сделать

. Команда 2033 не загружает выделение при показе без каталогов.[/s]
Ага. Понял! Попробую добавить и эту фишку.
Flasher писал(а):Как у меня не хочешь сделать?
Я твой и не смотрел ))
Вроде ж и у тебя режим выделения и шаг параметрами задаются.
Добавлено: Пн апр 20, 2015 01:07
Flasher
LonerD писал(а):AHK последняя?
Поставил последнюю - то же самое. Я думаю, дело в цикле.
LonerD писал(а):Незнание как это сделать
У меня мог посмотреть.
LonerD писал(а):Вроде ж и у тебя режим выделения и шаг параметрами задаются.
Посмотри название.
Добавлено: Пн апр 20, 2015 04:15
LonerD
Flasher писал(а):LonerD писал(а):AHK последняя?
Поставил последнюю - то же самое. Я думаю, дело в цикле.
Пока не представляю от чего может зависеть.
Нет, не в цикле, так как ты сказал, что "Пусто". То есть я так понимаю - отображается пустое окошко. А переменная FileList (список всех обрабатываемых файлов/каталогов) в цикле не изменяется.
Попробуй перед циклом вставить
msgbox, % FileList
Единственный нюанс (не знаю как в твоём скрипте) - в моём варианте есть некое ограничение на размер (то ли на количество файлов, то ли и длина имён/путей учитывается). У меня 60 тысяч файлов обрабатываются нормально, а вот более 90 тысяч из каталога WinSxS - не хотять...
Проблема возникает между копированием списка файлов в буфер и отработкой цикла... В чём причина - не могу понять .Увеличение лимита переменной не помогает (хотя дефолтный лимит 64 Мб, а у меня список файлов - меньше 20). Паузы всякие - тоже не помогают...
Команда StringReplace, FileList, FileList, % Path, , All
(удаление пути каталога из списка файлов, чтоб путь остался относительный) - не отрабатывает
Flasher писал(а):У меня мог посмотреть.
Посмотреть мало, надо понять алгоритм. Тут в своих скриптах через некоторое время не разберусь, а в чужом да без комментариев - сходу "не осилил" )).
В итоге разобрался, не знал про такую фишку с выделением.
Flasher писал(а):Посмотри название.
Ага, понял, может потом добавлю.
Скрипт обновил. Теперь при отображении файлов без каталогов тоже отрабатывает.
Добавлено: Пн апр 20, 2015 04:42
Flasher
LonerD писал(а):Нет, не в цикле, так как ты сказал, что "Пусто".
Пусто - не пусто, а выделение хоть и кривое, но есть. Похоже, что в цикле пропускаются какие-то имена, то ли с цифрами, то ли с какими-то навороченными именами типа как у торрентов.
Пишу первым параметром 3, а он выделяет в DirBranch файл под курсором.
LonerD писал(а):В чём причина - не могу понять .
А ты буферный текст просто записать в какой-нибудь txt можешь?
У меня тоже иногда возникают нестабильности на больших списках. То выделяет как надо, то всё подряд. Проблема в стандартной склейке/разбивке.
LonerD писал(а):В итоге разобрался, не знал про такую фишку с выделением.

Я лет 5 назад и сам не знал.
Добавлено: Пн апр 20, 2015 18:23
LonerD
Flasher писал(а):Пишу первым параметром 3, а он выделяет в DirBranch файл под курсором.
А... ну да... Совсем забыл. Если нет выделения - команда 2021 копирует в буфер путь к текущему файлу под курсором, а потом он и обрабатывается соответственно.
Вроде где-то на форуме уже обсуждали как побороть этот нюанс... Да, точно, вот знакомый автор
тему создавал.
Flasher писал(а):А ты буферный текст просто записать в какой-нибудь txt можешь?
Попробую.
Добавлено спустя 1 час 51 минуту:
Ну вот, ради такой финтифлюшной проверки пришлось раздуть скрипт в два раза (и єто не предел). А всё потому, что кто-то не добавил в Тотал команду копирования в буфер
только выделенных файлов и каталогов...
Обновил скрипт, добавил проверку.
Остаётся открытым вопрос о случае когда в каталоге всего один элемент (файл или каталог) а курсор находится на строке перехода на уровень выше. Или же когда в каталоге нет вообще ничего...
Тогда команда 2021 (Копировать в буфер имена с UNC-путями) вместо того, чтобы скопировать в буфер ничего (то есть просто очистить буфер) высвечивает модальное окошко "No files selected". Как эту дрянь обойти - пока не знаю.
PS. Ёжики зелёные, придумал. Оказывается совсем несложно проверить наличие файла под курсором прежде чем пытаться копировать имена выделенных файлов в буфер обмена (хотя метод и неочевидный). Проверка наличия файлов в каталоге тоже решается несложно средствами AHK.
Добавлено: Пн апр 20, 2015 20:57
Flasher
LonerD писал(а):А... ну да... Совсем забыл.
Ты о чём? 3 - это выделение
только папок.
LonerD писал(а):Обновил скрипт
Теперь похоже на правду.
Добавлено: Пн апр 20, 2015 21:07
LonerD
Flasher писал(а):Ты о чём? 3 - это выделение только папок.
О том, что мы выделяем каталоги командой 3303. Их при просмотре без каталогов нет, то есть
ничего не выделено. Но скрипт об этом не знает, и копирует в буфер имена и пути выделенных элементов командой 2021. Так как выделения нет - то команда копирует имя и путь к файлу под курсором, и скрипт его дальше обрабатывает. Потому и получалось, что при 3 (выделение
только папок) выделялся файл.
Сейчас работаю над проблемой с каталогами, в которых один или ноль файлов/подкаталогов. Пытаюсь добиться чтобы Тотал не высвечивал своё окошко. Идею понял, а скомбинировать пока не получается.
Добавлено: Пн апр 20, 2015 21:16
Flasher
LonerD писал(а):Так как выделения нет - то команда копирует имя и путь к файлу под курсором, и скрипт его дальше обрабатывает.
А, ну да, я то в своём использую механизм Хелпера, там он берёт только выделенное.
Добавлено: Пн апр 20, 2015 21:38
sa
Flasher
LonerD
По мне, опция выделения только в файлах, каталогах или повсеместно, притянута за уши. Напомните, если её кто-то запрашивал. Неужели пользователь не в состоянии показать в панели требуемые конкретно ему объекты и уже затем обработать их зеброй? А если ему нужно обработать только какую-то группу файлов или сочетание только определённых папок и файлов? Всё это тянуть в скрипт и заводить кучу кнопок с разными параметрами или оперативно менять параметры кнопки, припоминая, какой по счёту параметр, за что отвечает и что 1 это всё, а 3 - только папки?
Добавлено: Пн апр 20, 2015 21:54
Flasher
sa
Это моя инициатива, никем за уши не притянутая. Пользователь в состоянии убрать и отфильтровать, но это лишние движения. А на тот момент вообще про фильтр папок с cd речь не могла идти.
Менять в одной кнопке параметр - это бред. Кто этим вообще занимается? Люди создают меню либо бар в виде меню и там уже - пункты/кнопки с соотв. параметрами и описаниями.
Добавлено: Пн апр 20, 2015 22:14
sa
Flasher
И под каждый шаг (знать бы ещё, какие шаги потребуются) заводить по 3 кнопки?
Добавлено: Пн апр 20, 2015 22:18
Flasher
sa
Это каждый сам определяет для себя. Кому-то одного шага достаточно, кому-то - пары. Или ты предлагаешь каждый раз в окне спрашивать?
Добавлено: Пн апр 20, 2015 22:28
sa
Я предпочёл бы иметь одну кнопку, в которой изменяемым параметром был только шаг. Никаких наворотов с папками и файлами.
Добавлено: Пн апр 20, 2015 22:30
Flasher
Это не навороты, это жизненная необходимость. Я мог бы ещё понять, если бы параметра было 2, а не 3(4). А поскольку это не так, то и говорить тут больше особо не о чем.
Добавлено: Пн апр 20, 2015 22:39
sa
Если для тебя это жизненная необходимость, то хоть параметры придумай для опции, отличные от размера шага, например A, F, D.