LonerD

|
Posted: Tue Apr 28, 2015 01:40 Post subject: |
|
|
.
.
Полон форум программистов, скриптописателей и околототальных людей, и за три года никто не подсказал о командах Тоталу и прямом считывании информации...
В общем, вот такое манюнькое решение получилось на AHK.
Code: | ; Copy to clipboard list of only selected files and directories.
; Копирование в буфер обмена списка только выделенных файлов и каталогов.
#NoEnv
#NoTrayIcon
#MaxMem 1024
#SingleInstance force
SetBatchLines, -1
If not ( WinExist("ahk_class TTOTAL_CMD") || WinActive("ahk_class TTOTAL_CMD") )
ExitApp
Clipboard := ""
WinGet, hw_TTOTAL_CMD, ID, A
ControlGetFocus, aControl, % "ahk_id " hw_TTOTAL_CMD
SendMessage, 0x190, , , % aControl, % "ahk_id " hw_TTOTAL_CMD
CountItems = %ErrorLevel%
SendMessage, 0x187, 0, , % aControl, % "ahk_id " hw_TTOTAL_CMD
UpLevel = %ErrorLevel%
if (( CountItems > 1 ) || ( ( CountItems = 1 ) && ( UpLevel != 1 )))
SendMessage, 0x433, 2021,,, % "ahk_id " hw_TTOTAL_CMD
ExitApp |
Уже перед публикацией заметил одно ограничение - скрипт неполноценно работает, если в корне диска выделен один файл, и при этом в настройках Тотала отключена строка перехода на уровень выше .. (а также в виртуальных каталогах). Если пойму как побороть - дополню решение (точнее я уже знаю решение через WM_COPYDATA, но оно неэлегантное и раздует скрипт раза в три).
Также подозреваю, что есть решение через LB_GETSELITEMS без задействования буфера обмена, но пока не знаю как это сделать. _________________ Windows 11 | TC DreamLair eternal pre-α |
|