Как известно, в зависимости от наличия открытых в сеансе работы фтп-соединений и "дерев каталогов в отдельных панелях" - имена контролов файловых панелей изменяются, и могут принимать значения от TMyListBox1 до TMyListBox5 (в 64-х битном Тотале - соответственно LCLListBox).
Зачастую нужно определить в данный конкретный момент времени имя контрола правой и левой файловых панелей (как один из примеров - для того, чтобы узнать в какой панели находится курсор).
Пока что я дошёл до единственного решения.
Считываем текст в контролах TMyListBox1 - TMyListBox3, и если он равен W_TreeList1, то значит открыто одно дерево в отдельной панели, если W_TreeList2 - то два дерева. Далее зная это можно сделать предположения об именах контролов файловых панелей, но приходится узнавать список контролов окна Тотала и перебирать их чтобы узнать - было ли в процессе работы открыто ftp-соединение.
Пример реализации этого варианта - в скрипте.
Второй вариант попроще, но менее элегантный - считать имя контролла активной панели, заморозить окно Тотала, поместить курсор в правую панель, считать имя контрола, потом поместить курсор в левую панель, считать имя контрола, вернуть всё как было, разморозить окно.
Может есть какой-то более простой вариант с запросом к окну или процессу Тотала?
Контролы файловых панелей (Autoit, AHK)
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
- LonerD
- Сообщения: 1174
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
Контролы файловых панелей (Autoit, AHK)
Последний раз редактировалось LonerD Пн июн 09, 2014 19:11, всего редактировалось 1 раз.
Windows 11 | TC DreamLair eternal pre-α
- LonerD
- Сообщения: 1174
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
MVV
Тоже вариант. Но это надо использовать плагин Autorun, подплагин к нему, плюс утилиту TCFS2... Да к тому же мы не получаем имя контрола, а только ответ правая/левая панель.
А каким образом TCFS2Tools получает информацию об активной панели - постоянно резидентно отслеживает активность?
Можно ли из TCFS2Tools напрямую (минуя TCFS2) непосредственно в скрипте получать информацию об активной панели (какими-то запросами к dll-библиотеке)?
Тоже вариант. Но это надо использовать плагин Autorun, подплагин к нему, плюс утилиту TCFS2... Да к тому же мы не получаем имя контрола, а только ответ правая/левая панель.
А каким образом TCFS2Tools получает информацию об активной панели - постоянно резидентно отслеживает активность?
Можно ли из TCFS2Tools напрямую (минуя TCFS2) непосредственно в скрипте получать информацию об активной панели (какими-то запросами к dll-библиотеке)?
Windows 11 | TC DreamLair eternal pre-α
Функция появилась в последней версии (билд 188), сообщение нужно отправить следующее:
Здесь выбираем 1 или 2 для левой или правой панели, функция вернёт дескриптор окна списка файлов.
Кстати, узнать, в какой панели курсор, можно только из контекста процесса тотала, т.к. извне эта информация недоступна. Но TCFS2Tools позволяет определять, какая из панелей активна, и обмен происходит также через сообщения.
Код: Выделить всё
SendMessage(hTcWnd, 0x0433, 65556, 1 или 2)Кстати, узнать, в какой панели курсор, можно только из контекста процесса тотала, т.к. извне эта информация недоступна. Но TCFS2Tools позволяет определять, какая из панелей активна, и обмен происходит также через сообщения.