Страница 11 из 12
Добавлено: Сб июл 02, 2016 13:24
Skif_off
LonerD писал(а):Это в ТС9 появилось?
Нет, дефолтные возможности ListBox, работает и в 8.52а, а в ТС9 только удобнее получить дескриптор списка.
Апать не вижу смысла, ибо сложность с LB_* улавливаю (да и режимом эскизов не пользуюсь).
Добавлено: Чт авг 04, 2016 00:01
LonerD
Благодаря новым возможностям ТС9 удалось значительно сократить и оптимизировать скрипт.
Код: Выделить всё
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Total Commander DreamLair
; Script: Zebra file selection
; Скрипт: Выделение файлов зеброй
; Script version: 4.0 (2016.08.04)
; Required: Total Commander 9.0+
; Script author: LonerD
; Made in Donetsk People's Republic
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Parameters:
; 1) Selection mode:
; 1 - all; 2 - only files; 3 - only dirs
; 2) Selection position:
; 1 - begin from first file; 2 - from second etc
; 0 - begin from file under cursor
; 3) Selection range:
; 2 - each second file, 3 - each third file etc
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Параметры:
; 1) Метод выделения:
; 1 - всё; 2 - только файлы; 3 - только каталоги
; 2) Позиция выделения:
; с какого файла начинать (с первого, второго и т.д...)
; 0 - начинать с файла под курсором
; 3) Порядок выделения:
; 2 - каждый второй файл, 3 - каждый третий и т.д....
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#NoEnv
#NoTrayIcon
#MaxMem 1024
#SingleInstance force
SetBatchLines, -1
Mode = %1%
First = %2%
Range = %3%
If 0 < 3
Range = 2
If 0 < 2
First = 1
If Mode not in 1,2,3
Mode = 1
If not ( WinExist("ahk_class TTOTAL_CMD") || WinActive("ahk_class TTOTAL_CMD") )
ExitApp
WinGet, hw_TTOTAL_CMD, ID, ahk_class TTOTAL_CMD
global hw_TTOTAL_CMD
ClipSaved := ClipboardAll
Clipboard := ""
DllCall("LockWindowUpdate", "uint", hw_TTOTAL_CMD)
SendMessage, 1075, 524,,, % "ahk_id " hw_TTOTAL_CMD
SendMessage, 1075, 330 . Mode,,, % "ahk_id " hw_TTOTAL_CMD
TCAPanel := SendMessageTC(1074, 1000, 0, A)
hw_TCAPanel := SendMessageTC(1074, 8+TCAPanel, 0, A)
SelItems := SendMessageTC(1074, 1004+TCAPanel, 0, A)
if ( SelItems = 0 )
Goto, Exit
SendMessage, 1075, 2018,,, % "ahk_id " hw_TTOTAL_CMD
FileList := Clipboard
Clipboard := ""
ControlGetText, TCAPanelPath,, % "ahk_id " hw_TCAPanel
TCAPanelPath := StrReplace(TCAPanelPath, "\*.*", "\")
FileList := StrReplace(FileList, TCAPanelPath)
IsUpDir := SendMessageTC(1074, 1008+TCAPanel, 0, A)
if ( First = 0 )
{
FirstFile := SendMessageTC(1074, 1010+TCAPanel, 0, A)
FirstSelFile := SendMessageTC(1074, 1006+TCAPanel, 0, A)
if (( Mode = 3 ) & ( FirstSelFile >= FirstFile ))
{
SendMessage, 1075, 524,,, % "ahk_id " hw_TTOTAL_CMD
Goto, Exit
}
else if ((( FirstSelFile = 0 ) & ( IsUpDir = 1)) || (( Mode = 2 ) & ( FirstSelFile < FirstFile )))
FirstSelFile := 1
}
else
FirstSelFile := First
FileListSel := ""
Loop, Parse, FileList, `n, `r
{
if ( Mod(A_Index - FirstSelFile + IsUpDir,Range) = 1 )
FileListSel := FileListSel "`r`n" A_LoopField
}
Clipboard := FileListSel
SendMessage, 1075, 2033,,, % "ahk_id " hw_TTOTAL_CMD
Exit:
Clipboard := ClipSaved
ClipSaved := ""
FileList := ""
FileListSel := ""
DllCall("LockWindowUpdate", "uint", 0)
ExitApp
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SendMessageTC(TCMsg, wParam, lParam, aControl)
{
SendMessage, % TCMsg, % wParam, % lParam, % aControl, % "ahk_id " hw_TTOTAL_CMD
return ErrorLevel
}
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Добавлено: Чт авг 04, 2016 13:29
Skif_off
LonerD
LB_SETSEL не пробовал? Попробовал ради любопытства - у меня не срабатывает.
Выделение файлов через один
Добавлено: Вс фев 05, 2017 09:33
Totas
Как выделить папки через один, но не скриптом, а плагином (каким)? Скрипт не знаю куда вписывать.
Добавлено: Вс фев 05, 2017 09:47
Avada
Totas
А плагин вы знаете, куда вписывать? Не говоря про то, что не бывает плагинов для этой задачи, полностью заменяющих скрипты. И надобности в них нет никакой. А для тех, кто не знает, что куда вписывать, есть материалы форума, включая эту тему и памятку по скриптам в "Автоматизации". См.
здесь. Опять та же история?
Добавлено: Вс фев 05, 2017 15:07
sa
Totas
Поэкспериментируйте с
плагином Misc. В диалоге поиска (Alt+F7) на вкладке "Плагины" нужно задать параметры
Плагин:
misc
Свойство:
odd
Операция:
=
Значение:
Да
и на вкладке "Шаблоны поиска" сохранить шаблон (назовём его
odd).
После этого из расширенного русского меню или из кнопки вызывать команду для выделения группы папок (cm_SelectFolders -
Выделить группу: только папки) и выбирать созданный ранее шаблон
>odd. В девятой версии тотала можно просто завести кнопку с командой
selectfilesd >odd.
Добавлено: Вт дек 19, 2017 09:57
jackal-85
LonerD писал(а):Благодаря новым возможностям ТС9 удалось значительно сократить и оптимизировать скрипт.
подскажите, пожалуйста, как использовать Ваш скрипт?
что сделал я:
скопировал код, сохранил в файле формата vbs, закрепил на панели в TC9.01, добавлял различные параметры (%V, %Z, %P, 1 1 2)...
в любых случаях выдаёт ошибку 800А0400.
что я делаю не так?
спасибо большое!
Добавлено: Вт дек 19, 2017 10:16
Flasher
jackal-85 писал(а):что я делаю не так?
1. Начинаете предложения с маленькой буквы.
2. Не так сохраняете.
Это ahk, а не
vbs (себе потом тоже делал упрощённый под ТС9). Запускается через свой интерпретатор.
3. Не читаете внимательно шапку скрипта и памятку раздела.
Добавлено: Вт дек 19, 2017 14:49
jackal-85
Flasher писал(а):jackal-85 писал(а):что я делаю не так?
1. Начинаете предложения с маленькой буквы.
2. Не так сохраняете. Это ahk, а не vbs (себе потом тоже делал упрощённый под ТС9). Запускается через свой интерпретатор.
3. Не читаете внимательно шапку скрипта и памятку раздела.
а Можно Было Просто Написать "установи AutoHotkey", А Не Писать Столько Всего Лишнего...
ну и на этом спасибо!
Добавлено: Вт дек 19, 2017 14:56
Avada
jackal-85
В первую очередь можно (и нужно!) соблюдать
правила форума, за нарушение которых —
замечание.
Добавлено: Вт дек 19, 2017 15:18
Flasher
jackal-85
А ничего лишнего (в отличии от запрошенного) и не написано. Во-первых, приведены ссылки, по которым есть возможность определиться с выбором. Во-вторых, тут де-факто принято сперва читать прикреплённую памятку без задавания лишних вопросов. В-третьих, как-то вот обходимся мы без установки, поэтому предлагать подобное выглядело бы с моей стороны нелепицей. Под запуском через интерпретатор понимается не что иное, как подстановка пути перед путём к скрипту.
Добавлено: Вт дек 19, 2017 15:40
jackal-85
Flasher писал(а):Во-первых, приведены ссылки, по которым есть возможность определиться с выбором.
спасибо, не обратил внимание на скрипт vbs...
Flasher писал(а):Во-вторых, тут де-факто принято сперва читать прикреплённую памятку без задавания лишних вопросов.
не нашёл в теме, поэтому и спросил...
Flasher писал(а):В-третьих, как-то вот обходимся мы без установки, поэтому предлагать подобное выглядело бы с моей стороны нелепицей. Под запуском через интерпретатор понимается не что иное, как подстановка пути перед путём к скрипту.
я не знаю как можно обойтись, и поэтому тоже спросил...
вобщем спасибо!
Добавлено: Вт дек 19, 2017 15:55
Flasher
jackal-85 писал(а):не нашёл в теме
В теме прикреплений быть не может. Написано о текущем разделе.
jackal-85 писал(а):не знаю как можно обойтись
Элементарно. Распаковывается
верхний .zip под голубой кнопкой и используется подстановочный и соответствующий битности системы интерпретатор (AutoHotkeyU
(32/64).exe).
P.S.: П. 1 тут игнорировать чревато. Советую уважать участников обсуждения, тут не чат.
Добавлено: Вт дек 19, 2017 15:59
Avada
jackal-85
Ещё раз — и последний: либо вы оформляете свои посты нормально, либо, скорее всего, будете дальше решать свои проблемы в другом месте.
Добавлено: Сб май 02, 2020 15:54
HEXFIX
Flasher, а возможно скрипт доработать? По факту мелочь, но было бы идеально.
Сейчас объясню. Если я задаю в параметрах "выделить только папки" и применяю скрипт, но при этом курсор не стоит именно на папке, то выделения папок не происходит. С файлами работает где бы курсор ни стоял. Можно ли сделать то же самое и для папок?