View previous topic :: View next topic |
Author |
Message |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Mar 18, 2013 20:52 Post subject: |
|
|
MVV
А если в момент выполнения команды всплывёт какое-то окно приложения из трея? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Mar 18, 2013 23:48 Post subject: |
|
|
Я хочу предостеречься от любых потенциально возможных проблем. С чего ты взял, что винда не даёт перехватить фокус, если происходит единичная активация окна? Откуда винда может брать таймаут? Разве ты его не сам задаёшь?
Я предлагаю не только проверять перед каждой клавишей, но и ожидать появления вызываемого диалога до нажатий. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Mar 20, 2013 05:07 Post subject: |
|
|
Так это установка поверх, а не ожидание.
Ну, почему не то? Можно растянуть до send with waiting.
Можно создать предварительный список команд с диалогами и их классами, который и обрабатывать на ожидание. Или задавать класс в скобках через запятую. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Mar 20, 2013 23:17 Post subject: |
|
|
Крайний вариант сойдёт. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Thu Mar 21, 2013 12:38 Post subject: |
|
|
Бета 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 |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Mar 21, 2013 14:51 Post subject: |
|
|
MVV
Ну, неплохо. А без delay можно вполне обходиться.
MVV wrote: | 0 - синхронно, ждать результата (SendMessage), >0 - не ждать (PostMessage), <0 - не ждать (SendMessage в фоновом потоке) | Каким образом и с выполнением каких функций осуществляется синхронность? У тебя в примерах единицы стоят, а этих трёх нет. Можно примеры с описаниями того, как это работает? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2690
|
(Separately) Posted: Thu Mar 21, 2013 15:09 Post subject: |
|
|
MVV wrote: | Если второй параметр не указан, активируется последнее модальное окно (как и раньше).
|
Точно как и раньше? У меня перестала срабатывать одна из кнопок с MRT, возможно потому, что в ней появляется всплывающее окно подтверждения отката при мультипереименовании.
Такое впечатление, что передача нажатий прекращается и функция send завершает работу, а окно подтверждения так и остаётся открытым,
как и сам диалог мультипереименования.
Раньше всё успешно закрывалось. |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Thu Mar 21, 2013 15:51 Post subject: |
|
|
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 |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2690
|
(Separately) Posted: Thu Mar 21, 2013 16:07 Post subject: |
|
|
MVV wrote: | Разбивай посылку на несколько send | Это выход из положения.
MVV wrote: | Без delay иногда может не успевать. | Да уж, пока не догадался ввести delay - было страшновато. |
|
Back to top |
|
 |
LonerD

Joined: 04 Jan 2011 Posts: 1172 Location: Макеевка
|
(Separately) Posted: Thu Mar 28, 2013 21:17 Post subject: |
|
|
MVV
В чём ошибка?:
rleft=move(, , @/2, cyWorkArea)
Задал положение окна равным левой верхней точке рабочей области экрана, ширину - в половину ширины экрана, высоту - равную высоте рабочей области экрана (без панели задач).
Почему ширина неправильная (увы) - это понятно, левый border Тотала выезжает за пределы экрана потому как за координаты окна берётся не левая верхняя его точка, а что-то другое.
Но почему высота окна Тотала оказывается выше заданной? (нижняя часть окна уезжает под экран). Как правильно?
(хочу сэмулировать поведение окна, аналогичное Win+left в Win7/8 ) _________________ Windows 11 | TC DreamLair eternal pre-α |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Mar 28, 2013 21:49 Post subject: |
|
|
LonerD
А точно выезжает? И на сколько? Можно скриншот? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
LonerD

Joined: 04 Jan 2011 Posts: 1172 Location: Макеевка
|
(Separately) Posted: Thu Mar 28, 2013 22:19 Post subject: |
|
|
Flasher
Скриншот:
http://rghost.ru/44852021.view
Слева выезжает на размер bordera темы оформления (для наглядности - справа Акелпад выровненный вправо нажатием Win+Right).
После более внимательного рассмотрения, оказалось, что почему-то въезжает ещё и сверху под таскбар Windы, но совсем немножко. Возможно, это тоже связано с тем, что TCFS2 не учитывает border окна Тотала, а берёт за основу некую пятую точку.
Снизу - выезжает за пределы окна примерно на размер статус-строки (нижние кнопки отключены). Итого сверху под таскбар плюс снизу под экран выезжает примерно на размер таскбара.
То есть в качестве высоты окна Тотала учитывается не cyWorkArea, а @ ) _________________ Windows 11 | TC DreamLair eternal pre-α |
|
Back to top |
|
 |
|
|
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
|