Страница 2 из 3
Добавлено: Пн ноя 28, 2005 10:49
bobius
Batya
А где можно узнать ВСЕ коды клавиш, доступные для ввода в скрипт? Например, как обозначить Shift? Вообще, хотелось бы полную таблицу...
Я в итоге забабахал два скрипта с нехилой комбинацией клавиш - перемещаться по архивам стало невероятно удобно!

Сейчас осталось добавить автоматическое копирование ценного файла в отдельный каталог. Писал скрипт с участием F5 + Enter, но копирование не запускается. Сейчас буду углубляться в теорию на предмет написания скрипта: "узнать путь к файлу из противоположной панели и скопировать его в заранее определенный каталог".
Добавлено: Пн ноя 28, 2005 14:56
Batya
bobius
А где можно узнать ВСЕ коды клавиш, доступные для ввода в скрипт?
Вообще-то скрипт к горячим клавишам отношения не имеет.
Все клавиши, которые можно задавать в TC, можно видеть при задании горячей клавиши через интерфейс: в настройках "Разное" - группа полей "Переопределить горячие клавиши".
Например, как обозначить Shift?
В секции [Shortcuts] wincmd.ini:
A - Alt, C - Ctrl, S - Shift.
Сейчас осталось добавить автоматическое копирование ценного файла в отдельный каталог. ... Сейчас буду углубляться в теорию на предмет написания скрипта: "узнать путь к файлу из противоположной панели и скопировать его в заранее определенный каталог".
А подробней, может я помогу?
Добавлено: Пн ноя 28, 2005 16:21
bobius
Вообще-то скрипт к горячим клавишам отношения не имеет.
Я как раз имею в виду клавиши, нажатия на которые можно генерировать в скрипте (SendKeys). Там "^" - это Ctrl, а как имитировать Shift и все остальное (хочу всю таблицу кодов клавиш

).
А подробней, может я помогу?
Изначально я попытался имитировать последовательность: Ctrl+TAB (на следующей вкладке правой панели как раз располагается c:\Interesting); ТАВ (переход в левую панель, в которой активный как раз интересующий меня файл); F5; Enter (запускаем копирование); ТАВ; Ctrl+Shift+TAB (возвращаемся, как будто ничего не произошло).
Эта комбинация не сработала, остановившись на F5.
Теперь думаю, что запуск копирования через генерацию F5 - это несколько грубо. Можно ведь средствами VB все это сделать. Т.о., задачу могу сформулировать так:
В левой панели список архивов, которые я разбираю. В правой панели - содержимое архива, в котором я нахожусь в данный момент. В нем оказалось что-то ценное. Надо по нажатию, скажем, на F11 распаковать этот архив в папку, соответствующую его имени. Полный путь к папке пусть будет фиксирован (я заранее создам что-нибудь вроде c:\Interesting).
Добавлено: Пн ноя 28, 2005 16:43
Batya
bobius
bobius писал(а):Я как раз имею в виду клавиши, нажатия на которые можно генерировать в скрипте (SendKeys). Там "^" - это Ctrl, а как имитировать Shift и все остальное (хочу всю таблицу кодов клавиш

).
Вырезка из Help-а команды SendKeys (было в таблице, но, думаю, разберешься):
SHIFT +
CTRL ^
ALT %
BACKSPACE {BACKSPACE}, {BS}, or {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL or DELETE {DELETE} or {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER} or ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS or INSERT {INSERT} or {INS}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}
bobius писал(а):Надо по нажатию, скажем, на F11 распаковать этот архив в папку ...
Разархивировать чем? TC или, например, WinRar? Архивы какого типа?
Добавлено: Пн ноя 28, 2005 17:12
bobius
Batya писал(а):Вырезка из Help-а команды SendKeys (было в таблице, но, думаю, разберешься)
За это спасибо. А ссылку на первоисточник не подскажешь? Хочу постепенно въезжать в скриптописание.
Batya писал(а):bobius писал(а):Надо по нажатию, скажем, на F11 распаковать этот архив в папку ...
Разархивировать чем? TC или, например, WinRar? Архивы какого типа?
Думаю, лучше ТС. WinRAR установлен, но зачем его теребить лишний раз? Архивы ZIP и RAR, но другие типы теоретически не исключены. Хотя бы эти обработать, с другими я уж как-нибудь вручную разберусь, если встретятся.
Добавлено: Пн ноя 28, 2005 17:35
Batya
А ссылку на первоисточник не подскажешь?
Ищи script56.chm. Например, первое, что выдал Яндекс -
script56.chm.
Насчет распаковывания - подумаю, что можно сделать. Главное - передать от TC имя архива.
Добавлено: Пн ноя 28, 2005 17:41
bobius
В крайнем случае, не распаковывать а копировать. Потом всем скопом распакую по папкам...
Добавлено: Пн ноя 28, 2005 17:45
Batya
Хм... Я так понимаю, что в момент, когда надо запустить распаковку, курсор в TC стоит как раз на нужном архиве?
Т.е. слева стоим на архиве, а справа его содержимое?
Добавлено: Пн ноя 28, 2005 17:54
bobius
Да. Изначально активна правая панель, т.е. содержимое. Но ничего не мешает первой командой перейти в левую, в которой курсор будет установлен на нужном архиве.
Добавлено: Пн ноя 28, 2005 18:23
Batya
Код: Выделить всё
'=====================================================================
' Распаковка архива в противоположной панели TC в указананный каталог
'=====================================================================
Option Explicit
Dim MyDir
'=== Каталог для распаковки: ===
MyDir = "C:\Interesting"
'===============================
Dim TCS
Set TCS = CreateObject("TCScript.Helper")
TCS.LockTC True
TCS.SendKeystroke ("{Tab}")
TCS.SendCommand ("cm_UnpackFiles")
TCS.SendKeystroke (MyDir)
TCS.SendKeystroke ("{Tab}{Tab}{Tab}{Tab}")
TCS.SendKeystroke (" ")
TCS.SendKeystroke ("{Enter}")
TCS.SendKeystroke ("{Tab}")
TCS.LockTC False
Set TCS=Nothing
Wscript.Quit
Добавлено: Пн ноя 28, 2005 22:58
bobius
Вай, заработало!
Вот теперь моя душенька довольна. Скорость "разбора завалов" увеличилась раза в два.
Batya, Спасибо.

Добавлено: Ср ноя 30, 2005 21:43
bobius
Есть маленькое замечание: когда запускается процесс копирования, то появляются разного рода окошки в зависимости от типа архива; что-то вроде "Распаковка..."; так вот, последний генерируемый TAB перехватывается этим окном вместо того, чтобы быть адресованным ТС для возврата на правую панель.
Поскольку в теорию я так и не углубился (ты быстро прислал свой скрипт), прошу у тебя помощи по этой небольшой доработке.
Надо как-то дожидаться завершения процесса распаковки или вместо генерации ТАВ использовать прямую команду "переход в противоположную панель" (не знаю, есть ли такая) или еще чего хитрее придумать...
Я пока слегка подредактировал скрипт на копирование в очереди (одним нажатием на Enter окно сразу уходит в фон) на соседнюю вкладку, в которой открыта папка-получатель. Проблема в том, что обычное копирование/перенос файла не срабатывает, т.к. в противоположной панели (правой) уже открыто содержимое архива, и при попытке запуска команды Copy или Move ТС это определяет. Копирование сразу превращается в "Добавление в архив" без возможности ставить в очередь. Поэтому пришлось извращаться с переключением вкладок.
И еще... Такое ощущение, что у не срабатывает команда Lock, т.к. я отчетливо вижу все, что происходит во время выполнения скрипта: перемещение курсора, переключене панелей, запуск команд и т.д.
Добавлено: Чт дек 01, 2005 10:27
Batya
bobius
Что-то я попробовал поиграться - ничего не получается. В принципе есть команда cm_FocusRight, но она не отрабатывает, т.к. открыто окно распаковки. В TCScript.Helper есть свойство Wait, при задании которого в значение True должно выполняться ожидание завершения команд (в частности - распаковки), если я правильно понял. Но что-то не работает.
Идеальный вариант - распаковывать при помощи WinRar. Тогда вообще проблем не будет - запустил распаковку в трэй и радуешься. Единственное - все ли твои архивы поддерживаются WinRar-ом? И еще надо будет описать все возможные типы архивов, т.к., вроде бы, в зависимости от типа архива командная строка будет выглядеть по-разному.
И что-то я не понял, что ты потом пытаешься скопировать и куда?
А команда Lock не должна делать невидимыми действия, она должна запрещать вмешиваться в эти действия.
Добавлено: Чт дек 01, 2005 11:41
Volniy
Batya писал(а):В TCScript.Helper есть свойство Wait, при задании которого в значение True должно выполняться ожидание завершения команд (в частности - распаковки), если я правильно понял. Но что-то не работает.
Свойство Wait определяет будет ли производиться ожидание ответа от TC, что, мол, ага, команда выполнена. В данном случае команда была "Показать диалог распаковки архива". И эта команда была успешно выполнена. А вот команды "Распаковать" Тоталу никто не подавал, да и нет такой комады, afaik. Остальные команды в твоем скрипте заключались в имитации нажатий на различные клавиши.
А команда Lock не должна делать невидимыми действия, она должна запрещать вмешиваться в эти действия.
Сложно выразился и, к тому же , неточно
Все, на что способна команда LockTC, это запретить перерисовки окна TC. Тоесть все меняющиеся выделения, перемещающиеся в панелях файлы и тп видны не будут. Это приводит к тому, что процесс выполнения скрипта проходит с меньшим мельтешением на экране и быстрее, конечно же. Тоесть в промежутке между выполнением команд
и
изображение внутри окна Тотала не перерисовывается. И ... все

Добавлено: Чт дек 01, 2005 12:06
Batya
Volniy
Volniy писал(а):Тоесть в промежутке между выполнением команд
и
изображение внутри окна Тотала не перерисовывается. И ... все

ОК. Понял. Тогда выходит, что 10-я бетка гючит, раз
bobius писал(а):Такое ощущение, что у не срабатывает команда Lock, т.к. я отчетливо вижу все, что происходит во время выполнения скрипта: перемещение курсора, переключене панелей, запуск команд и т.д.