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 ... 66, 67, 68 ... 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
Flasher



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

Post (Separately) Posted: Mon Mar 18, 2013 20:52    Post subject: Reply with quote

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



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

Post (Separately) Posted: Mon Mar 18, 2013 21:21    Post subject: Reply with 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: Mon Mar 18, 2013 23:48    Post subject: Reply with quote

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



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

Post (Separately) Posted: Tue Mar 19, 2013 00:27    Post subject: Reply with quote

[url=http://msdn.microsoft.com/en-us/library/windows/desktop/ms633539(v=vs.85).aspx]Почитай Remarks[/url].

Ожидать окна - явно задача не функции send. Согласись, название немного не то.
_________________
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 Mar 20, 2013 05:07    Post subject: Reply with quote

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



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

Post (Separately) Posted: Wed Mar 20, 2013 10:07    Post subject: Reply with quote

В любом случае, выбор окна - не задача send. Крайний вариант - передать send дескриптор окна, который вернет другая функция.
_________________
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 Mar 20, 2013 23:17    Post subject: Reply with quote

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



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

Post (Separately) Posted: Thu Mar 21, 2013 12:38    Post subject: Reply with quote

Бета 350.

Функция send теперь может принимать второй параметр - дескриптор окна. Если во время передачи нажатий окно потеряло фокус, передача прекращается и функция завершает работу. Если второй параметр не указан, активируется последнее модальное окно (как и раньше).

Функция findwnd возвращает дескриптор окна с заданными классом и/или названием, принадлежащее рабочему экземпляру тотала. Послать в калькулятор не получится.

Функция sendmsg отправляет сообщение окну с заданным дескриптором (первый параметр, остальные параметры - как у msg).

Функция tcm может принимать второй параметр - режим синхронности: 0 - синхронно, ждать результата (SendMessage), >0 - не ждать (PostMessage), <0 - не ждать (SendMessage в фоновом потоке). Пятый параметр функции msg теперь работает так же.

Функция tem может принимать второй параметр: если не 0, сообщение отправляется в фоновом потоке.

Примеры
Code:
/ef "tcm(2400,1) delay(100) send(`hello{TAB}world`)"
/ef "tem(`em_multirename шаблон1`, 1) delay(100) send(`hello{TAB}world`,findwnd(`TMultiRename`))"
/ef "tcm(502,1) delay(100) send(`{tab 4}`,findwnd(`TATTRIBDLG`))"

_________________
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: Thu Mar 21, 2013 14:51    Post subject: Reply with quote

MVV
Ну, неплохо. А без delay можно вполне обходиться.
MVV wrote:
0 - синхронно, ждать результата (SendMessage), >0 - не ждать (PostMessage), <0 - не ждать (SendMessage в фоновом потоке)
Каким образом и с выполнением каких функций осуществляется синхронность? У тебя в примерах единицы стоят, а этих трёх нет. Можно примеры с описаниями того, как это работает?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2690

Post (Separately) Posted: Thu Mar 21, 2013 15:09    Post subject: Reply with quote

MVV wrote:
Если второй параметр не указан, активируется последнее модальное окно (как и раньше).

Точно как и раньше? У меня перестала срабатывать одна из кнопок с MRT, возможно потому, что в ней появляется всплывающее окно подтверждения отката при мультипереименовании.
Такое впечатление, что передача нажатий прекращается и функция send завершает работу, а окно подтверждения так и остаётся открытым,
как и сам диалог мультипереименования.
Раньше всё успешно закрывалось.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Thu Mar 21, 2013 15:51    Post subject: Reply with quote

Flasher,
Без delay иногда может не успевать. И фоновый тред может не успеть послать, как основная программа завершит работу (если после этой команды других команд мало).

Quote:
Каким образом и с выполнением каких функций осуществляется синхронность? У тебя в примерах единицы стоят, а этих трёх нет. Можно примеры с описаниями того, как это работает?

Почему этих трех нет? 1>0 - раз. Все команды, для которых параметр не указан явно, посылаются с 0, как и раньше - два (с этим вариантом ты знаком не первый год). Добавился лишь 1 режим.
Раньше сообщения можно было слать (Send) и ставить в очередь (Post). Чтобы запросить у TCFS2Tools значение, нужен Send, чтобы послать нажатие или отжатие клавиши, нужен Post. Я сам не особо вижу разницы между Post и фоновым Send, на всякий случай есть оба. В тех примерах TCFS2.ini, где последний параметр равен 1, надо оставлять 1. Слать юзер-команды лучше через Send (обычный или фоновый, если надо в диалог потом послать нажатия или команды).

Quote:
Точно как и раньше? У меня перестала срабатывать одна из кнопок с MRT, возможно потому, что в ней появляется всплывающее окно подтверждения отката при мультипереименовании.

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



Joined: 29 Apr 2009
Posts: 2690

Post (Separately) Posted: Thu Mar 21, 2013 16:07    Post subject: Reply with quote

MVV wrote:
Разбивай посылку на несколько send
Это выход из положения.
MVV wrote:
Без delay иногда может не успевать.
Да уж, пока не догадался ввести delay - было страшновато.
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1172
Location: Макеевка

Post (Separately) Posted: Thu Mar 28, 2013 21:17    Post subject: Reply with quote

MVV
В чём ошибка?:
rleft=move(, , @/2, cyWorkArea)
Задал положение окна равным левой верхней точке рабочей области экрана, ширину - в половину ширины экрана, высоту - равную высоте рабочей области экрана (без панели задач).
Почему ширина неправильная (увы) - это понятно, левый border Тотала выезжает за пределы экрана потому как за координаты окна берётся не левая верхняя его точка, а что-то другое.
Но почему высота окна Тотала оказывается выше заданной? (нижняя часть окна уезжает под экран). Как правильно?
(хочу сэмулировать поведение окна, аналогичное Win+left в Win7/8 )
_________________
Windows 11 | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Thu Mar 28, 2013 21:49    Post subject: Reply with quote

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



Joined: 04 Jan 2011
Posts: 1172
Location: Макеевка

Post (Separately) Posted: Thu Mar 28, 2013 22:19    Post subject: Reply with quote

Flasher
Скриншот:
http://rghost.ru/44852021.view
Слева выезжает на размер bordera темы оформления (для наглядности - справа Акелпад выровненный вправо нажатием Win+Right).

После более внимательного рассмотрения, оказалось, что почему-то въезжает ещё и сверху под таскбар Windы, но совсем немножко. Возможно, это тоже связано с тем, что TCFS2 не учитывает border окна Тотала, а берёт за основу некую пятую точку.
Снизу - выезжает за пределы окна примерно на размер статус-строки (нижние кнопки отключены). Итого сверху под таскбар плюс снизу под экран выезжает примерно на размер таскбара.
То есть в качестве высоты окна Тотала учитывается не cyWorkArea, а @ )
_________________
Windows 11 | TC DreamLair eternal pre-α
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 ... 66, 67, 68 ... 128, 129, 130  Next
Page 67 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