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 

TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое
Goto page Previous  1, 2, 3 ... 120, 121, 122 ... 128, 129, 130  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
MVV



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

Post (Separately) Posted: Mon Dec 05, 2016 00:54    Post subject: Reply with quote

Flasher wrote:
Только 1 и начинается с 1.

Ну тогда совсем несложно будет переводить одно в другое.
Quote:
Не понятна реализация. Как формально комбинируется эта псевдопеременная с varset/varget, что и в каком виде она возвращает?

Переменная просто возвращает глубину вложенности вызовов макросов/команд. Каждый следующий вложенный вызов команды или макроса (не функции) - это +1 к уровню.
Quote:
И ещё вопрос - как получить текст окна? Т.е. необходимо записать имеющийся текст, например, в varset, а потом подставить его с добавкой в settext. Скажем, на примере заголовка панели. Это возможно?

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



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Dec 05, 2016 01:33    Post subject: Reply with quote

MVV wrote:
Ну тогда совсем несложно будет переводить одно в другое.
Ну, в принципе, да, 1 отнимать.
MVV wrote:
Переменная просто возвращает глубину вложенности вызовов макросов/команд.
А почему именно глубина, а не порядковый номер? Это меня и сбило с толку. Хотелось бы разобрать:
Code:
eval(varset(@lvl, findwnd(TMyComboBox, , , 0, 1))
varset поставляет в переменную значение, полученное findwnd. Но как туда попадает позиция в дереве окон?
MVV wrote:
Возврат строк из функций всё ещё не поддерживается.
А вот пригодился бы теперь.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Mon Dec 05, 2016 13:26    Post subject: Reply with quote

Quote:
А почему именно глубина, а не порядковый номер? Это меня и сбило с толку. Хотелось бы разобрать:

Собственно, после возврата из функции (после подъёма на уровень вверх) её переменные уже не нужны и могут быть переиспользованы. И потом, глубина вложенности в TCFS2 уже есть, используется для защиты от зацикливания.
А что такое порядковый номер?

Quote:
varset поставляет в переменную значение, полученное findwnd. Но как туда попадает позиция в дереве окон?

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



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Dec 06, 2016 18:57    Post subject: Reply with quote

MVV wrote:
Собственно, после возврата из функции (после подъёма на уровень вверх) её переменные уже не нужны и могут быть переиспользованы.
Какая связь у переиспользования с глубиной? Confused
MVV wrote:
А что такое порядковый номер?
Номер элемента окна в порядке следования в дереве.
MVV wrote:
Позиция попадает в findwnd, а varset запоминает уже найденное окно с заданной позицией.
Позиция? Туда разве не дескриптор попадает, если верить справке?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Tue Dec 06, 2016 19:52    Post subject: Reply with quote

Quote:
Какая связь у переиспользования с глубиной?

Стандартный стек: переменные выделяются на стеке, а по выходу из функции на их месте выделяются переменные следующей запущенной функции.

Quote:
Номер элемента окна в порядке следования в дереве.

Как-то ты смешал @lvl и индексы окон... Это совершенно разные вещи.

Quote:
Позиция? Туда разве не дескриптор попадает, если верить справке?

В твоём примере вычисляется findwnd(TMyComboBox, , , 0, 1), и затем результат записывается в ячейку памяти TCFS2 с индексом @lvl. Позиция в дереве окон здесь - параметр функции findwnd. А номер ячейки памяти задаётся псевдопеременной @lvl.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jan 10, 2017 09:46    Post subject: Reply with quote

MVV
А с диалогом Открыть что-то можно придумать?:
Code:
/ef "tcm(2032,1) eval(settext_wait(`C:\List.txt`, findwnd(ComboBox,,,0,1)))"
/ef "tcm(2032,1) eval(settext_wait(`C:\List.txt`, findwnd(ComboBox,,findwnd(#32770),0,1)))"


MVV wrote:
Quote:
И что насчёт установки фокуса?

Терпение, мой друг, терпение. Smile
Долго терпеть-то? Smile

Для чекбоксов и радиокнопок обнова требуется, или силами msg решаемо?
+ Есть пожелание: если в findwnd вместо класса пишем A (@,#,$ - не суть), то берётся класс окна на переднем плане.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Tue Jan 10, 2017 13:26    Post subject: Reply with quote

Flasher wrote:
А с диалогом Открыть что-то можно придумать?:
Code:
/ef "tcm(2032,1) eval(settext_wait(`C:\List.txt`, findwnd(ComboBox,,,0,1)))"
/ef "tcm(2032,1) eval(settext_wait(`C:\List.txt`, findwnd(ComboBox,,findwnd(#32770),0,1)))"

Здесь у меня сработал такой вариант:
Code:
TCFS2 /ef "tcm(2032,1) delay(1000) eval(settext_wait(`C:\List.txt`, findwnd(Edit,,findwnd(ComboBox,,findwnd(#32770),0,1))))"

Не знаю, почему без задержки не работает, возможно, само окно устанавливает пустой текст полю ввода уже после TCFS2. Также не совсем понимаю, почему сам комбобокс игнорирует сообщение WM_SETTEXT.

Flasher wrote:
Долго терпеть-то? Smile

Если терпеть, то долго... Забыл я про TCFS2, постараюсь на днях сделать.

Flasher wrote:
Для чекбоксов и радиокнопок обнова требуется, или силами msg решаемо?

Какая обнова?

Flasher wrote:
+ Есть пожелание: если в findwnd вместо класса пишем A (@,#,$ - не суть), то берётся класс окна на переднем плане.

Да собственно для этого достаточно простого findwnd(), что легко проверить с помощью команды:
Code:
TCFS2 /ef delay(2000) /ei "settext(findwnd())"

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



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jan 10, 2017 14:00    Post subject: Reply with quote

MVV wrote:
Здесь у меня сработал такой вариант:
У меня не срабатывает. Если к ComboBox дописываю Ex32, то работает с задержкой 100.
MVV wrote:
Также не совсем понимаю, почему сам комбобокс игнорирует сообщение WM_SETTEXT.
А это может быть связано с тем, что это системное окно, а не ТС?

MVV wrote:
постараюсь на днях сделать.
Гуд.
MVV wrote:
Какая обнова?
Нововведение.
MVV wrote:
хотя лучше наверное флаг завести для пропуска невидимых окон
Лучше их в автоматический игнор ставить.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Tue Jan 10, 2017 14:08    Post subject: Reply with quote

Quote:
А это может быть связано с тем, что это системное окно, а не ТС?

Скорее, компонент хитрый. Если слать сообщение верхнему ComboBoxEx32, то работает. А если среднему ComboBox - нет.

Quote:
Нововведение.

Которое из?

Quote:
Лучше их в автоматический игнор ставить.

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



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jan 10, 2017 14:18    Post subject: Reply with quote

MVV wrote:
Если слать сообщение верхнему ComboBoxEx32, то работает. А если среднему ComboBox - нет.
Так у тебя же в команде как раз средний. Да и всё равно без задержки никак. И на x64 системе/ТС класс тот же?
MVV wrote:
Которое из?
Оба. Smile Обновление с двумя нововведениями (отметкой чекбокса и радиокнопки).
MVV wrote:
Я могу захотеть найти скрытый чекбокс и включить его.
Понятно. Пусть будет флаг.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Tue Jan 10, 2017 15:29    Post subject: Reply with quote

Quote:
Так у тебя же в команде как раз средний. Да и всё равно без задержки никак. И на x64 системе/ТС класс тот же?

Корпоративная Win7x64 с обновлениями. Оно по идее должно только от версии системной библиотеки зависеть и от используемого класса (Проводник как всегда впереди планеты всей, ему мало ComboBox, ему надо ComboBoxEx32, на который я документации не вижу).

Quote:
Обновление с двумя нововведениями (отметкой чекбокса и радиокнопки).

Фух, понял. Радиокнопке достаточно послать BM_CLICK ($F5) для активации, а чекбоксу - BM_SETCHECK ($F1) с новым состоянием в wParam: 0 - снять, 1 - установить, 2 - затемнить. Хоть вчера. Smile
_________________
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 Jan 10, 2017 23:13    Post subject: Reply with quote

Собственно,

TCFS2Tools Build 220:
+ команды для получения и установки фокуса компонентов окон

Можно узнать дескриптор активного поля ввода/чекбокса/выпадающего списка и т.п. Можно переключить фокус, например, с диалога копирования на поле ввода кодировки в листере.

Играем:
Code:
TCFS2 /ef delay(2000) /ei "settext(`focus: ` msg($433, 65557))"
TCFS2 /ef delay(2000) /ef "msg($433, 65558, 1050700)"


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



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jan 10, 2017 23:37    Post subject: Reply with quote

MVV
Вот спасибо! Smile
Правда, хотелось, чтобы определение активного окна/контрола было в самой TCFS2.

В первом примере запятой нет.
Во втором 1050700 - это что?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Wed Jan 11, 2017 00:23    Post subject: Reply with quote

В самой TCFS2 невозможно, т.к. это работает только в пределах процесса.

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



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Jan 11, 2017 00:37    Post subject: Reply with quote

Получение фокуса не срабатывает. Нажал, перешёл в комстроку - тихо.
Про 1050700 ReadMe молчит.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
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
Goto page Previous  1, 2, 3 ... 120, 121, 122 ... 128, 129, 130  Next
Page 121 of 130

 
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