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

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Aug 27, 2011 18:36 Post subject: |
|
|
ask-rus wrote: | Значит, не решение. | Логики в данном утверждении - ноль...
ask-rus wrote: | С этим есть проблема, существенная. | Ничего удивительного. Нет никаких функций в TCFS2, которые убивают ждущий своей задачи процесс. Ставь меньше паузу, раз так быстро надо повторно переключаться. Либо с апдейтом по вышибанию процесса обращайся к автору. |
|
Back to top |
|
 |
ask-rus

Joined: 10 Nov 2009 Posts: 2077 Location: Russian Federation
|
(Separately) Posted: Sat Aug 27, 2011 18:49 Post subject: |
|
|
Flasher wrote: | Логики в данном утверждении - ноль... |
Да, это именно утверждение. См. задачу на тот момент (последние два слова).
Flasher wrote: | Либо с апдейтом по вышибанию процесса обращайся к автору. |
Пойду обращусь. _________________ «Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Aug 27, 2011 18:52 Post subject: |
|
|
ask-rus wrote: | Да, это именно утверждение. | Это утверждение ни в какие ворота. См. что написано здесь касаемо флага. Твоя команда и так одна (первая)... |
|
Back to top |
|
 |
ask-rus

Joined: 10 Nov 2009 Posts: 2077 Location: Russian Federation
|
(Separately) Posted: Sat Aug 27, 2011 18:59 Post subject: |
|
|
Flasher wrote: | Это утверждение ни в какие ворота. |
Не в твои?
Flasher wrote: | См. что написано здесь касаемо флага. |
Flasher wrote: | Короче каждой кнопке свой флаг (свободный бит либо ключ в ini). Уж с двумя-то кнопками разобраться самостоятельно точно не проблема. |
ask-rus wrote: | одной командой |
Одна кнопка.
Flasher wrote: | Твоя команда и так одна (первая)... |
Покажи эту команду. _________________ «Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Aug 27, 2011 19:12 Post subject: |
|
|
Как говорит Avada - "ещё раз и больше ни разу":
Flasher wrote: | либо пользоваться только подобными кнопками/командами для всех сменных баров (со своим битом каждая, естественно). |
ask-rus wrote: | Покажи эту команду. | С некоторой поправкой:
Quote: | TCFS2.exe /ef "set_tcini(TCFS2, Bar, 1) tem(em_1), test(tcini(TCFS2, Bar, #)!=1) | set_tcini(TCFS2, Bar, 0) tem(em_2) delay(15000) tem(em_1)" | Хотя MVV писал, что должно и без этого при проверке на ноль срабатывать. |
|
Back to top |
|
 |
ask-rus

Joined: 10 Nov 2009 Posts: 2077 Location: Russian Federation
|
(Separately) Posted: Sat Aug 27, 2011 19:34 Post subject: |
|
|
Flasher wrote: | либо пользоваться только подобными кнопками/командами для всех сменных баров (со своим битом каждая, естественно). |
Тогда стояла и до сих пор стоит проблема с двумя нажатиями (первая часть цитируемого). А главной же проблемой является
Flasher wrote: | ждущий своей задачи процесс |
Бессмысленные хождения по кругу пользы никому не принесут. _________________ «Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Aug 27, 2011 19:40 Post subject: |
|
|
ask-rus wrote: | и до сих пор стоит проблема с двумя нажатиями | Никаких повторных ("двух") нажатий не требуется. Проверено.
ask-rus wrote: | Бессмысленные хождения по кругу пользы никому не принесут. | Повторение одного и того же в твоём случае и есть хождение по кругу. Жди ответа автора. |
|
Back to top |
|
 |
ask-rus

Joined: 10 Nov 2009 Posts: 2077 Location: Russian Federation
|
(Separately) Posted: Sat Aug 27, 2011 19:46 Post subject: |
|
|
Flasher wrote: | Никаких повторных ("двух") нажатий не требуется. Проверено. |
Почему-то, первое переключение у меня уже требует двойного нажатия. Условия те же? _________________ «Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Aug 27, 2011 19:51 Post subject: |
|
|
При чём тут условия? Ты команду с поправкой вызываешь из обеих панелей или что? |
|
Back to top |
|
 |
ask-rus

Joined: 10 Nov 2009 Posts: 2077 Location: Russian Federation
|
(Separately) Posted: Sat Aug 27, 2011 19:55 Post subject: |
|
|
Flasher wrote: | При чём тут условия? |
Думаю, может ты спутал em_1 с em_2.
Flasher wrote: | Ты команду с поправкой вызываешь из обеих панелей или что? |
Сначала я её вызываю с одной панели и жду завершения операции. Нет успеха, т. к. приходится нажимать на кнопку дважды. _________________ «Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Aug 27, 2011 20:07 Post subject: |
|
|
Сейчас проверил с ожиданием - действительно срабатывает только с повторного, хотя такого не должно быть. Это косяк программы. Нужно у MVV спросить. |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Sat Aug 27, 2011 20:11 Post subject: |
|
|
Quote: | 3. Выполняем команду #1 и наблюдаем смену панели уже на 3-6 сек. (не 15!). |
Судя по всему, срабатывает ещё незавершённая команда из шага 1, которая заканчивает ожидание. Ведь остановить ожидание нельзя. И прежде запущенная команда после ожидания не может узнать, она ли переключала на вторую панель.
Quote: | #1 TCFS2.exe /ef "set_tcini(TCFS2, Bar, 1) tem(em_1), test(tcini(TCFS2, Bar, #)) | set_tcini(TCFS2, Bar, 0) tem(em_2) delay(15000) tem(em_1)" |
При беглом рассмотрении не понял, почему при Bar != 0 туда пишется 1, а если равно 0, то 0, а не наоборот. И логичнее было бы писать в Bar номер, совпадающий с номером юзер-команды.
ask-rus wrote: | Необходимо их объединить (усомнился в своих силах) и получить Открытие расширенной панели инструментов (em_2) с автоматическим возвратом на главную (em_1) через 15 сек с отменой (открытие главной и сброс отсчета времени, или без сброса по возможностям) одной командой. |
Чтобы решить проблему, нужно сделать так:
Code: | [Items]
set_bar=set_tcini(TCFS2, Bar, 1) tem(em_bar1), test(#1 == 1) | set_tcini(TCFS2, Bar, 2) tem(em_bar2), test(#1 == 2) | set_tcini(TCFS2, Bar, 3) tem(em_bar3), test(#1 == 3) ; | ... создать блок для каждой панели
cmd1=set_tcini(TCFS2, Cmd1, #1) run_item(set_bar, 1), test(tcini(TCFS2, Bar, # != 1)) | set_tcini(TCFS2, Cmd1, #1) run_item(set_bar, 2) delay(15000) if(tcini(TCFS2, Cmd1, # == #1), run_item(set_bar, 1))
cmd1loader=run_item(cmd1, GetTickCount)
cmd2=set_tcini(TCFS2, Cmd1, 0) tem(em_1)
[Macros]
tt_GetTickCount=65573
GetTickCount=msg($433, tt_GetTickCount) ; Возвращает количество миллисекунд с момента загрузки Windows |
При этом запускать команду cmd1 необходимо с параметром GetTickCount - этим мы укажем ей текущий номер сеанса. Можно сразу через cmd1loader:
Code: | TCFS2 /ei cmd1loader |
Команда, возвращающая GetTickCount, появляется в TCFS2Tools, начиная с версии 1.4.1.114 (чуть позже выложу).
Добавлено:
Эх, всё равно не работает, я и забыл, что подстановка параметров у меня ленивая. То есть, параметр не вычисляется при подстановке. Получается, что GetTickCount каждый раз вызывается по новой, и значения получаются разные. Похоже, для таких задач необходимо добавить псевдо-параметр, обозначающий идентификатор сеанса TCFS2 (банально значение GetTickCount в момент запуска программы) - так можно будет безошибочно различать сеансы. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Last edited by MVV on Sat Aug 27, 2011 20:34; edited 4 times in total |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Aug 27, 2011 20:18 Post subject: |
|
|
MVV wrote: | При беглом рассмотрении не понял, почему при Bar != 0 туда пишется 1, а если равно 0, то 0, а не наоборот. | См. выше, добавил !=1 красным. Т.е. если не равно 1, то ставим 1, если равно 1, то 0. Но даже так глючит.
MVV wrote: | При этом запускать команду cmd1 необходимо с параметром GetTickCount - этим мы укажем ей текущий номер сеанса. | А что именно даст этот номер сеанса? Не лучше сделать предложенное (функция, убивающая все процессы-дубли с другим PID)? |
|
Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Sat Aug 27, 2011 20:38 Post subject: |
|
|
Предложенное где? И потом, определять процессы-дубли и убивать их - явно задача не для TCFS2. И вообще, убивать процессы - не самая лучшая идея.
А номер сеанса - это почти PID, но уникальный для всех процессов, запущенных во время всей сессии Windows, в то время как PID могут повторяться через некоторое время (после завершения процесса с таким PID).
А даст он то, что cmd1, запущенная ранее, после ожидания увидит, что номер сеанса, записанный в Cmd1, изменился (т.к. после неё cmd1 уже запускали повторно), и завершит свою работу, не переключая больше ничего. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Aug 27, 2011 20:49 Post subject: |
|
|
MVV wrote: | Предложенное где? | Тебе ask-rus в тематичном топике ссылку дал. А ты не видишь?
MVV wrote: | И потом, определять процессы-дубли и убивать их - явно задача не для TCFS2. И вообще, убивать процессы - не самая лучшая идея. | Задача для любой программы, чтобы команды срабытывали корректно, и при повторном обращении к похожей команде функция переставала учитываться. В данном случае delay. А каким образом это будет реализовано - другой вопрос. Но такая каша в несколько команд, которую ты привёл мне лично не нравится. Т.е. твоя идея никак не лучше моей, ИМХО.
MVV wrote: | А номер сеанса - это почти PID, но уникальный для всех процессов, запущенных во время всей сессии Windows, в то время как PID могут повторяться через некоторое время (после завершения процесса с таким PID). | Вот имено, что после завершения. Значит никаких проблем это не вызовет.
MVV wrote: | А даст он то, что запущенная ранее команда, увидев после ожидания, что номер сеанса, записанный в Cmd1, изменился, поймёт, что ей нужно прервать свою работу. | Геморройный подход. Представь сколько таких команд нужно понаписать в ini для схожих задач, ужас...
А так была бы одна маленькая запись с названием функции забивки процессов-дублей. |
|
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
|