Страница 63 из 243

Добавлено: Вс авг 25, 2013 14:53
MVV
Flasher писал(а):Я понимаю (я взял лишь необходимую часть), но у тебя не так, ты заключаешь в кавычки обе команды.
В одном случае каждая команда обрабатывается как строчка конфига (выполняются одна за другой), в другом - обе обрабатываются как одна строчка (выполняются так же одна за другой), т.е. разницы по сути никакой.
Flasher писал(а):У меня с ActiveRight=1 всё чётко отрабатывает.
Я даже отключал ActiveRight для теста, тоже работает.

Добавлено: Вс авг 25, 2013 15:07
Avada
Flasher писал(а):Какие у тебя открыты папки в момент закрытия ТС, и в каком состоянии активные вкладки?
Проверялось в единобразных условиях. Корневые папки дисков C: и D:. Они же, естественно, в активных вкладках.
Flasher писал(а):А ты ТС перезапускаешь (например, по скрипту) или закрываешь/открываешь?
Специально уточню, что при ActiveRight=0 проблем нет, всё обрабатывается нормально. Но у меня в норме значение этого ключа 1. И здесь при скриптовом перезапуске оказывается активна левая панель, там отображается корень диска C:, а справа открывается папка плагина без возврата в предыдущую папку. При любом другом варианте перезапуска или закрытия/открытия — видны две открытых папки плагина, активна правая панель.
MVV писал(а):Я даже отключал ActiveRight для теста, тоже работает.
Отключение ActiveRight — это ActiveRight=0 (активна левая панель). А у меня 1.

Добавлено: Вс авг 25, 2013 15:36
Flasher
Avada
Пробовал и так, как ты описал, всё равно такого глюка с открытием одной и той же виртуальной папки в обеих панелях нет.
Хочу вернуться к этому фактору:
MVV писал(а):Возможно, проблема в том, что тотал активирует правую панель уже после того, как выполняет команду.
А если указать tcm(570,-1) ?

Добавлено: Вс авг 25, 2013 15:50
MVV
Avada писал(а):И здесь при скриптовом перезапуске оказывается активна левая панель, там отображается корень диска C:, а справа открывается папка плагина без возврата в предыдущую папку. При любом другом варианте перезапуска или закрытия/открытия — видны две открытых папки плагина, активна правая панель.
Я тоже думаю, что в твоем случае и с TCFS2 команда отправляется до того, как тотал активирует правую панель. Попробуй поставить задержку перед вызовом команды:

Код: Выделить всё

ShellExec '%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe' '/ef delay(500) "tcd(`\\\Virtual Panel`,,S)" tcm(570,1)'
Flasher писал(а):А если указать tcm(570,-1) ?
Это не поможет. Если в случае с PostMessage тотал делает текущие дела (загрузку плагина) и потом обрабатывает очередь сообщений, куда попадает команда "Назад" (т.е. в аккурат когда плагин загрузится и вернет управление), то в случае с фоновым SendMessage тотал будет вынужден обработать её непосредственно в момент получения, и с большой степенью вероятности этот момент наступит раньше, чем нам нужно.

Добавлено: Вс авг 25, 2013 15:59
Flasher
MVV писал(а):Попробуй поставить задержку перед вызовом команды:
Ему не резон, первый предложенный вариант тоже может идти с задержкой (предложенной LonerD и меньшей в 10 раз, кстати, 50 против твоих 500). И раз виртуальная папка таки открывается в правой панели, то логично было бы задержку ставить между функциями, а не до.
MVV писал(а):в случае с фоновым SendMessage тотал будет вынужден обработать её непосредственно в момент получения, и с большой степенью вероятности этот момент наступит раньше, чем нам нужно.
Т.е. ожидания результата (как подразумевается в ReadMe) тут никакого не будет?

Добавлено: Вс авг 25, 2013 17:28
Avada
MVV писал(а):Попробуй поставить задержку перед вызовом команды
Попробовал. И рад сообщить, что в таком виде всё работает нормально. Также выяснил, что при delay(380) глюки ещё есть, а при delay(390) — уже нет.
А в первом варианте (с /CD) задержка действительно гораздо меньше — однако же всё работает.

Добавлено: Вс авг 25, 2013 17:46
Flasher
Avada
А если принудительно переходить в правую панель?:

Код: Выделить всё

ShellExec '%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe' '/ef tcm(4002,0) "tcd(`\\\Virtual Panel`)" tcm(570,1)'
А вообще лучше даже так:

Код: Выделить всё

ShellExec '%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe' '/ef "tcd(,`\\\Virtual Panel`)" "tcm(4002), eval(L_isActive)" tcm(570,1)'

Добавлено: Вс авг 25, 2013 18:07
Avada
Flasher
У меня это выглядит так, что TC то ли вообще не открывается, то ли всё же пытается открыться, но моментально закрывается. Во всяком случае, работать с ним нельзя совсем, так что глубже я не копался.

Добавлено: Вс авг 25, 2013 18:11
Flasher
Avada
Со второй пробовал?

Добавлено: Вс авг 25, 2013 18:25
Avada
Flasher
Да, потом попробовал. Со второй всё работает.

Добавлено: Вс авг 25, 2013 18:27
Flasher
Avada писал(а):Со второй всё работает.
Ну вот и хорошо. И без задержки, что нам и требовалось получить. :wink:

Добавлено: Вс авг 25, 2013 18:32
Avada
Flasher
Ну, меня эта задержка не сильно напрягала... Но три проверенных работоспособных варианта — это, конечно, хорошо.

Добавлено: Вс авг 25, 2013 18:40
Flasher
Avada
А почему три?

Кстати, можно сюда ещё проверку значения ключа ActiveRight воткнуть для пущей оптимальности.

Добавлено: Вс авг 25, 2013 18:56
Avada
Flasher
Первый — с /CD. Второй и третий — варианты применения TCFS2 с задержкой и без.

Добавлено: Вс авг 25, 2013 19:19
Flasher
Avada
Понятно. А оптимальная история будет такая:

Код: Выделить всё

Set TCFS2 '%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe'
IniRead ACTIVE_RIGHT %COMMANDER_INI% Configuration ActiveRight
If %ACTIVE_RIGHT% = 1 Then
  ShellExec %TCFS2% '/ef "tcd(,`\\\Virtual Panel`)" "tcm(4002), eval(R_isActive == 0)" tcm(570,1)'
Else
  ShellExec %TCFS2% '/ef "tcd(`\\\Virtual Panel`)" tcm(570,1)'
EndIf