Страница 78 из 130
Добавлено: Пн янв 20, 2014 09:53
sa
MVV писал(а):Да всё возможно
Теперь и в функции
send можно обходиться без
{DQ}.
Добавлено: Пн янв 20, 2014 12:07
MVV
Ай-яй-яй, вот и побочный эффект.

Добавлено: Пн янв 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} с именами, содержащими пробелы, работать толком не будет

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

Добавлено: Пн янв 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 писал(а):А это откуда? Ты вроде нигде не афишировал.
Из
TCFS2.ini, вестимо.

Странно, что ты только увидел, другие уже используют, в теме упоминалось.

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

Добавлено: Вт янв 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...