Страница 78 из 130

Добавлено: Пн янв 20, 2014 09:53
sa
MVV писал(а):Да всё возможно
Теперь и в функции send можно обходиться без {DQ}.

Добавлено: Пн янв 20, 2014 12:07
MVV
Ай-яй-яй, вот и побочный эффект. :D

Добавлено: Пн янв 20, 2014 12:38
rust
MVV, дополнительно по использованию %O. На самом деле рабочий код для выделения файлов вида File_XX, отличающихся счетчиком, выглядит так

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

[em_selByPartName]
button=
param=/ef "tcm(3312,1) send(`+(){DQ}^~(%O){BS 2}~*{DQ}{enter}`)"
cmd=%COMMANDER_PATH%\addons\tcfs2.exe
Бубны с + и ^ позволяют корректно работать с русскими именами, с PuntoSwitcher и позволяют вешать на клавишу с Shift (у меня Shift+плюс).
Конечно можно использовать буфер обмена

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

param=/ef "tcm(1007,1) send(`^c{ESC}`) delay(100) tcm(3312,1) send(`+(){DQ}^v{BS 2}~*{DQ}{enter}`)"
но в этом случае я теряю содержимое clipboard.
Без {DQ} с именами, содержащими пробелы, работать толком не будет :D

Добавлено: Пн янв 20, 2014 13:18
sa
rust писал(а):Без {DQ} с именами, содержащими пробелы, работать толком не будет
Заменил {DQ} на ". Работает!

Добавлено: Пн янв 20, 2014 13:36
rust
Действительно работает, пойду просить новую клавиатуру, на моей нет “ или все-таки {DQ} оставить :D

Добавлено: Пн янв 20, 2014 13:42
sa
rust писал(а):на моей нет “
Исправил. Я там из Word-а чего-то накопировал.

Добавлено: Пн янв 20, 2014 13:43
MVV
Так, ну хватит, пока заменять {DQ} на кавычку можно лишь в новой бета-версии, в старых надо писать {DQ}.

rust,
По выделению я на оффоруме написал, как обойти проблему с помощью батника.

sa,
Только сижу и думаю, что за странная у тебя двойная кавычка...

Добавлено: Пн янв 20, 2014 14:53
rust
MVV, спасибо, видел, батник не берет полностью имена с пробелами. Остановлюсь на втором варианте, скопировать имя в буфер, вызвать cm_SelectFiles, вставить из буфера.

Добавлено: Пн янв 20, 2014 15:02
MVV
Там не в пробелах проблема, а в том, что диалог появляется после начала выполнения функции send, а для неё требуется, чтобы окно не теряло фокуса на протяжении всей отправки нажатий. Тут решение.


Кстати, надо в стандартную поставку включить макрос send_wait, который будет ждать окно и потом посылать ему... Пока можно вручную добавить его в секцию макросов.

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

send_wait=loop(@<=if(null(#3),5,#3)*10 && if(#2,send(#1,#2)*0,delay(100)))	; Ожидает появления окна и отправляет ему нажатия клавиш. Первые два параметра - как у функции send, третий - число секунд (по умолчанию 5)
Тогда отпадет нужда в delay и wait_for:

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

eval(send_wait(`hello world{ENTER}`, findwnd(`TCOMBOINPUT`))
И батник будет работать:

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

start "" "%COMMANDER_PATH%\addons\tcfs2.exe" /ef "tcm(3312,1) eval(send_wait(`{DQ}%~n1{BS 2}*{DQ}{ENTER}`, findwnd(`TCOMBOINPUT`))"

Добавлено: Пн янв 20, 2014 16:25
Flasher
MVV писал(а):надо в стандартную поставку включить макрос send_wait
Альтернатива обсуждаемому ранее? ;)
MVV писал(а):wait_for
А это откуда? Ты вроде нигде не афишировал.

Добавлено: Пн янв 20, 2014 16:47
MVV
Flasher писал(а):Альтернатива обсуждаемому ранее? ;)
Скорее, реализация, т.к. не припомню других рабочих вариантов.
Flasher писал(а):А это откуда? Ты вроде нигде не афишировал.
Из TCFS2.ini, вестимо. :wink:
Странно, что ты только увидел, другие уже используют, в теме упоминалось. :)

Добавлено: Пн янв 20, 2014 16:48
sa
Flasher писал(а):нигде не афишировал.
См.

Добавлено: Пн янв 20, 2014 17:03
Flasher
MVV писал(а):Скорее, реализация, т.к. не припомню других рабочих вариантов.
Мысль была о функции.
MVV писал(а):Странно, что ты только увидел, другие уже используют, в теме упоминалось.
Да, зевнул, откровенно. :roll:

Добавлено: Вт янв 21, 2014 11:09
rust
MVV, батник работает, но только если передавать ему %N, я-то передавал %O. Т.е если передаем %O (как и %M), то имеем проблемы с пробелами в имени, если передаем %N, то он возвращает имя без расширения, как %O в обычной, не Search result, панели.
Кстати, в моем конкретном случае send_wait не очень подходит, в панели дубликатов класс окна при выделении файлов - TDuplSelForm, остается старый добрый delay.

Добавлено: Вт янв 21, 2014 11:39
sa
MVV
Может быть, стоит время ожидания добавить необязательным третьим параметром непосредственно в функцию send? Не надо будет городить огород с макросом и eval...