Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Просмотр содержимого архива без его открытия
Goto page Previous  1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
bobius



Joined: 19 Nov 2005
Posts: 22
Location: Киров

Post (Separately) Posted: Mon Nov 28, 2005 11:49    Post subject: Reply with quote

Batya
А где можно узнать ВСЕ коды клавиш, доступные для ввода в скрипт? Например, как обозначить Shift? Вообще, хотелось бы полную таблицу...
Я в итоге забабахал два скрипта с нехилой комбинацией клавиш - перемещаться по архивам стало невероятно удобно! Very Happy Сейчас осталось добавить автоматическое копирование ценного файла в отдельный каталог. Писал скрипт с участием F5 + Enter, но копирование не запускается. Сейчас буду углубляться в теорию на предмет написания скрипта: "узнать путь к файлу из противоположной панели и скопировать его в заранее определенный каталог".
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Nov 28, 2005 15:56    Post subject: Reply with quote

bobius
Quote:
А где можно узнать ВСЕ коды клавиш, доступные для ввода в скрипт?

Вообще-то скрипт к горячим клавишам отношения не имеет.
Все клавиши, которые можно задавать в TC, можно видеть при задании горячей клавиши через интерфейс: в настройках "Разное" - группа полей "Переопределить горячие клавиши".
Quote:
Например, как обозначить Shift?

В секции [Shortcuts] wincmd.ini:
A - Alt, C - Ctrl, S - Shift.
Quote:
Сейчас осталось добавить автоматическое копирование ценного файла в отдельный каталог. ... Сейчас буду углубляться в теорию на предмет написания скрипта: "узнать путь к файлу из противоположной панели и скопировать его в заранее определенный каталог".

А подробней, может я помогу?
Back to top
View user's profile Send private message
bobius



Joined: 19 Nov 2005
Posts: 22
Location: Киров

Post (Separately) Posted: Mon Nov 28, 2005 17:21    Post subject: Reply with quote

Quote:
Вообще-то скрипт к горячим клавишам отношения не имеет.

Я как раз имею в виду клавиши, нажатия на которые можно генерировать в скрипте (SendKeys). Там "^" - это Ctrl, а как имитировать Shift и все остальное (хочу всю таблицу кодов клавиш Smile).
Quote:
А подробней, может я помогу?

Изначально я попытался имитировать последовательность: Ctrl+TAB (на следующей вкладке правой панели как раз располагается c:\Interesting); ТАВ (переход в левую панель, в которой активный как раз интересующий меня файл); F5; Enter (запускаем копирование); ТАВ; Ctrl+Shift+TAB (возвращаемся, как будто ничего не произошло).
Эта комбинация не сработала, остановившись на F5.
Теперь думаю, что запуск копирования через генерацию F5 - это несколько грубо. Можно ведь средствами VB все это сделать. Т.о., задачу могу сформулировать так:
В левой панели список архивов, которые я разбираю. В правой панели - содержимое архива, в котором я нахожусь в данный момент. В нем оказалось что-то ценное. Надо по нажатию, скажем, на F11 распаковать этот архив в папку, соответствующую его имени. Полный путь к папке пусть будет фиксирован (я заранее создам что-нибудь вроде c:\Interesting).
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Nov 28, 2005 17:43    Post subject: Reply with quote

bobius
bobius wrote:
Я как раз имею в виду клавиши, нажатия на которые можно генерировать в скрипте (SendKeys). Там "^" - это Ctrl, а как имитировать Shift и все остальное (хочу всю таблицу кодов клавиш Smile).

Вырезка из 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 wrote:
Надо по нажатию, скажем, на F11 распаковать этот архив в папку ...

Разархивировать чем? TC или, например, WinRar? Архивы какого типа?
Back to top
View user's profile Send private message
bobius



Joined: 19 Nov 2005
Posts: 22
Location: Киров

Post (Separately) Posted: Mon Nov 28, 2005 18:12    Post subject: Reply with quote

Batya wrote:
Вырезка из Help-а команды SendKeys (было в таблице, но, думаю, разберешься)

За это спасибо. А ссылку на первоисточник не подскажешь? Хочу постепенно въезжать в скриптописание.
Batya wrote:
bobius wrote:
Надо по нажатию, скажем, на F11 распаковать этот архив в папку ...

Разархивировать чем? TC или, например, WinRar? Архивы какого типа?

Думаю, лучше ТС. WinRAR установлен, но зачем его теребить лишний раз? Архивы ZIP и RAR, но другие типы теоретически не исключены. Хотя бы эти обработать, с другими я уж как-нибудь вручную разберусь, если встретятся.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Nov 28, 2005 18:35    Post subject: Reply with quote

Quote:
А ссылку на первоисточник не подскажешь?

Ищи script56.chm. Например, первое, что выдал Яндекс -
script56.chm.

Насчет распаковывания - подумаю, что можно сделать. Главное - передать от TC имя архива.


Last edited by Batya on Mon Nov 28, 2005 18:44; edited 2 times in total
Back to top
View user's profile Send private message
bobius



Joined: 19 Nov 2005
Posts: 22
Location: Киров

Post (Separately) Posted: Mon Nov 28, 2005 18:41    Post subject: Reply with quote

В крайнем случае, не распаковывать а копировать. Потом всем скопом распакую по папкам...
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Nov 28, 2005 18:45    Post subject: Reply with quote

Хм... Я так понимаю, что в момент, когда надо запустить распаковку, курсор в TC стоит как раз на нужном архиве?
Т.е. слева стоим на архиве, а справа его содержимое?
Back to top
View user's profile Send private message
bobius



Joined: 19 Nov 2005
Posts: 22
Location: Киров

Post (Separately) Posted: Mon Nov 28, 2005 18:54    Post subject: Reply with quote

Да. Изначально активна правая панель, т.е. содержимое. Но ничего не мешает первой командой перейти в левую, в которой курсор будет установлен на нужном архиве.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Nov 28, 2005 19:23    Post subject: Reply with quote

Code:
'=====================================================================
' Распаковка архива в противоположной панели 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
Back to top
View user's profile Send private message
bobius



Joined: 19 Nov 2005
Posts: 22
Location: Киров

Post (Separately) Posted: Mon Nov 28, 2005 23:58    Post subject: Reply with quote

Вай, заработало! Very Happy
Вот теперь моя душенька довольна. Скорость "разбора завалов" увеличилась раза в два.

Batya, Спасибо. Wink
Back to top
View user's profile Send private message
bobius



Joined: 19 Nov 2005
Posts: 22
Location: Киров

Post (Separately) Posted: Wed Nov 30, 2005 22:43    Post subject: Reply with quote

Есть маленькое замечание: когда запускается процесс копирования, то появляются разного рода окошки в зависимости от типа архива; что-то вроде "Распаковка..."; так вот, последний генерируемый TAB перехватывается этим окном вместо того, чтобы быть адресованным ТС для возврата на правую панель.
Поскольку в теорию я так и не углубился (ты быстро прислал свой скрипт), прошу у тебя помощи по этой небольшой доработке.
Надо как-то дожидаться завершения процесса распаковки или вместо генерации ТАВ использовать прямую команду "переход в противоположную панель" (не знаю, есть ли такая) или еще чего хитрее придумать...
Я пока слегка подредактировал скрипт на копирование в очереди (одним нажатием на Enter окно сразу уходит в фон) на соседнюю вкладку, в которой открыта папка-получатель. Проблема в том, что обычное копирование/перенос файла не срабатывает, т.к. в противоположной панели (правой) уже открыто содержимое архива, и при попытке запуска команды Copy или Move ТС это определяет. Копирование сразу превращается в "Добавление в архив" без возможности ставить в очередь. Поэтому пришлось извращаться с переключением вкладок.
И еще... Такое ощущение, что у не срабатывает команда Lock, т.к. я отчетливо вижу все, что происходит во время выполнения скрипта: перемещение курсора, переключене панелей, запуск команд и т.д.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Dec 01, 2005 11:27    Post subject: Reply with quote

bobius
Что-то я попробовал поиграться - ничего не получается. В принципе есть команда cm_FocusRight, но она не отрабатывает, т.к. открыто окно распаковки. В TCScript.Helper есть свойство Wait, при задании которого в значение True должно выполняться ожидание завершения команд (в частности - распаковки), если я правильно понял. Но что-то не работает.
Идеальный вариант - распаковывать при помощи WinRar. Тогда вообще проблем не будет - запустил распаковку в трэй и радуешься. Единственное - все ли твои архивы поддерживаются WinRar-ом? И еще надо будет описать все возможные типы архивов, т.к., вроде бы, в зависимости от типа архива командная строка будет выглядеть по-разному.
И что-то я не понял, что ты потом пытаешься скопировать и куда?
А команда Lock не должна делать невидимыми действия, она должна запрещать вмешиваться в эти действия.
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Thu Dec 01, 2005 12:41    Post subject: Reply with quote

Batya wrote:
В TCScript.Helper есть свойство Wait, при задании которого в значение True должно выполняться ожидание завершения команд (в частности - распаковки), если я правильно понял. Но что-то не работает.

Свойство Wait определяет будет ли производиться ожидание ответа от TC, что, мол, ага, команда выполнена. В данном случае команда была "Показать диалог распаковки архива". И эта команда была успешно выполнена. А вот команды "Распаковать" Тоталу никто не подавал, да и нет такой комады, afaik. Остальные команды в твоем скрипте заключались в имитации нажатий на различные клавиши.

Quote:
А команда Lock не должна делать невидимыми действия, она должна запрещать вмешиваться в эти действия.

Сложно выразился и, к тому же , неточно Smile
Все, на что способна команда LockTC, это запретить перерисовки окна TC. Тоесть все меняющиеся выделения, перемещающиеся в панелях файлы и тп видны не будут. Это приводит к тому, что процесс выполнения скрипта проходит с меньшим мельтешением на экране и быстрее, конечно же. Тоесть в промежутке между выполнением команд
Code:
LockTC True
и
Code:
LockTc False
изображение внутри окна Тотала не перерисовывается. И ... все Rolling Eyes
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Dec 01, 2005 13:06    Post subject: Reply with quote

Volniy
Volniy wrote:
Тоесть в промежутке между выполнением команд
Code:
LockTC True
и
Code:
LockTc False
изображение внутри окна Тотала не перерисовывается. И ... все Rolling Eyes

ОК. Понял. Тогда выходит, что 10-я бетка гючит, раз
bobius wrote:
Такое ощущение, что у не срабатывает команда Lock, т.к. я отчетливо вижу все, что происходит во время выполнения скрипта: перемещение курсора, переключене панелей, запуск команд и т.д.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Goto page Previous  1, 2, 3  Next
Page 2 of 3

 
Jump to:  
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