Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Контролы файловых панелей (Autoit, AHK)

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Mon Jun 09, 2014 16:56    Post subject: Контролы файловых панелей (Autoit, AHK) Reply with quote

Как известно, в зависимости от наличия открытых в сеансе работы фтп-соединений и "дерев каталогов в отдельных панелях" - имена контролов файловых панелей изменяются, и могут принимать значения от TMyListBox1 до TMyListBox5 (в 64-х битном Тотале - соответственно LCLListBox).
Зачастую нужно определить в данный конкретный момент времени имя контрола правой и левой файловых панелей (как один из примеров - для того, чтобы узнать в какой панели находится курсор).

Пока что я дошёл до единственного решения.
Считываем текст в контролах TMyListBox1 - TMyListBox3, и если он равен W_TreeList1, то значит открыто одно дерево в отдельной панели, если W_TreeList2 - то два дерева. Далее зная это можно сделать предположения об именах контролов файловых панелей, но приходится узнавать список контролов окна Тотала и перебирать их чтобы узнать - было ли в процессе работы открыто ftp-соединение.
Пример реализации этого варианта - в скрипте.

Второй вариант попроще, но менее элегантный - считать имя контролла активной панели, заморозить окно Тотала, поместить курсор в правую панель, считать имя контрола, потом поместить курсор в левую панель, считать имя контрола, вернуть всё как было, разморозить окно.

Может есть какой-то более простой вариант с запросом к окну или процессу Тотала?
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α


Last edited by LonerD on Mon Jun 09, 2014 19:11; edited 1 time in total
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Mon Jun 09, 2014 18:58    Post subject: Reply with quote

Если установлен TCFS2Tools, можно запрашивать дескрипторы файловых панелей отправкой сообщения окну тотала.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Mon Jun 09, 2014 19:14    Post subject: Reply with quote

MVV
Тоже вариант. Но это надо использовать плагин Autorun, подплагин к нему, плюс утилиту TCFS2... Да к тому же мы не получаем имя контрола, а только ответ правая/левая панель.
А каким образом TCFS2Tools получает информацию об активной панели - постоянно резидентно отслеживает активность?
Можно ли из TCFS2Tools напрямую (минуя TCFS2) непосредственно в скрипте получать информацию об активной панели (какими-то запросами к dll-библиотеке)?
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Mon Jun 09, 2014 19:35    Post subject: Reply with quote

Достаточно только TCFS2Tools, её можно установить на манер Autorun, а посылать ему сообщения из AHK банальным SendMessage (чем TCSF2 и занимается).
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Tue Jun 10, 2014 01:38    Post subject: Reply with quote

Функция появилась в последней версии (билд 188), сообщение нужно отправить следующее:
Code:
SendMessage(hTcWnd, 0x0433, 65556, 1 или 2)

Здесь выбираем 1 или 2 для левой или правой панели, функция вернёт дескриптор окна списка файлов.

Кстати, узнать, в какой панели курсор, можно только из контекста процесса тотала, т.к. извне эта информация недоступна. Но TCFS2Tools позволяет определять, какая из панелей активна, и обмен происходит также через сообщения.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group