Страница 1 из 2

[WISH] Переход к следующей папке не выходя из текущей

Добавлено: Сб июн 09, 2007 08:17
Моторокер
Было бы полезным переходить в следующую папку, не выходя из текущей.

т.е. вместо нажатия BackSpace, Вниз, Enter нажимать что-то вроде Ctrl+Alt+Вниз/Вверх, но просматривать содержимое папок.

Добавлено: Сб июн 09, 2007 12:56
VadiMGP
А какую папку ситать следующей? По алфавиту?

Добавлено: Сб июн 09, 2007 14:10
Моторокер
Точно, а ведь списка родительских папок нет. Блин.

А так бы следующая по алфавиту, или как там настроено в Тотале.

Добавлено: Сб июн 09, 2007 14:15
VadiMGP
Тогда, наверное, только скриптом можно. Те же самые BackSpace, Вниз, Enter.

Добавлено: Сб июн 09, 2007 14:35
Моторокер
VadiMGP писал(а):Тогда, наверное, только скриптом можно. Те же самые BackSpace, Вниз, Enter.
Enter на файле, когда папки кончатся?
Или тоже можно проверить скриптом этот вариант?

Добавлено: Сб июн 09, 2007 14:49
VadiMGP
Нет, Enter будет не на файле. Смотри - BackSpace возвращает в родительскую папку, на последней папке стрелка вниз не сработает и Enter снова войдет в ту же папку. В принципе, на AHК наверняка можно и эту ситуацию обработать, но тут уже лучше спросить спецов по скриптам. У меня со скриптами только поверхностное знакомство.

Добавлено: Сб июн 09, 2007 14:51
VadiMGP
Нет, соврал. Не так все просто.Но все равно, я думаю, что АНК позволит это обработать.

Добавлено: Сб июн 09, 2007 21:09
Volniy
Вот черновичек, вроде работает:

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

'(c) 2007, Volniy 

 Option Explicit
 Dim TCS, D, prevD, FSO
 
 Set TCS = CreateObject("TCScript.Helper")
 Set FSO = CreateObject("scripting.filesystemobject")
 
 TCS.SendCommand 2002 ' cm_GoToParent
 prevD = TCS.GetSrcSelectedFiles(True)(0)
 TCS.SendKeystroke "{DOWN}"
 D = TCS.GetSrcSelectedFiles(True)(0)
 If (FSO.FolderExists(D)=True) Then
    If (StrComp(prevD,D,vbTextCompare)<>0) Then
       TCS.SendCommand 2003 ' cm_GoToDir
    Else
       MsgBox "No more directories in the file panel!", vbExclamation, "Error!"
       ' Call GoTo1stDir
    End If
 Else
    MsgBox "File is selected, no more directories!", vbExclamation, "Error!"
    ' Call GoTo1stDir
 End If

 Set TCS = Nothing
 Set FSO = Nothing
 WScript.Quit

Sub GoTo1stDir
   TCS.SendKeystroke "^{HOME}" 
   TCS.SendCommand 2003 ' cm_GoToDir
End Sub
Примечание: два закоментированных Call-a будучи раскомментированными будут открывать первую директорию в панели после сообщений о том что список директорий закончился (сообщения в этом случае можно и убрать, я думаю).

Добавлено: Сб июн 09, 2007 23:46
VadiMGP
Почему "черновичек"? Выглядит вполне закончено. Можно, разве что, добавить возможность после последней папки скакнуть на первую (на случай если начали использовать скрипт на с первой папки, а с середины списка). Но это уже явно из серии "гламур". Да и не знаю, нужно ли это Моторокеру.

Добавлено: Ср июн 13, 2007 21:41
Вахмурка
Скрипт вниз (к следующей), оттуда ссылка на аналогичный "вверх".
С момента написания дня не проходит, чтобы я не воспользовался. Даже панельку специальную сделал (не считая горячих клавиш и кнопок на обычной панели ТС). БЕЗУМНО удобно. Не знаю, почему это понимают всего трое (Моторокер, Gregory и ваш покорный слуга).

Добавлено: Сб апр 16, 2011 00:04
slideray
Volniy писал(а):Вот черновичек, вроде работает:

Код: '(c) 2007, Volniy
Отличный, полезный скрипт!
Вопрос, не сильно мешает, но в принципе, почему оно так? Может быть можно не выводить данный сабж? Повесил на скрипт хоткей - "Shift+OEM_.", ну не важно, просто, если продолжаешь удерживать шифт, то выдает сообщение:

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

Error!
No more directories in the file panel!

Добавлено: Сб апр 16, 2011 01:13
sa
slideray
Выскажу такое предположение.
Скрипт в начале своей работы передает активному окну TC нажатие клавиши {DOWN} (вниз). Удержание во время работы скрипта Shift, Alt или Ctrl модифицирует действие этой клавиши, поскольку на Shift+Down, Alt+Down и Ctrl+Down в TC назначены совсем другие команды и это приводит к нарушению выполнения скрипта. Можно попробовать использовать в качестве модификатора вместо Shift клавишу Win.

Добавлено: Сб апр 16, 2011 10:36
HEXFIX
Попробовал. Действительно, очень удобно. А можно тоже самое для перемещения вверх, но без использования PowerPro?

Добавлено: Сб апр 16, 2011 18:23
Вахмурка
Попробовал. Действительно, очень удобно. А можно тоже самое для перемещения вверх, но без использования PowerPro?
Мои скрипты тоже работают. Код открытый, синтаксис примитивный, так что желающие могут просто перевести скрипты с языка PowerPro на тот, которыми они лучше владеют. Если возникнут вопросы, я постараюсь помочь.

Добавлено
А насчет горячих клавиш - я использую Alt+PgDn/Alt+PgUp, на которые в ТС ничего не повешено.

Добавлено: Вс апр 17, 2011 07:47
Flasher
Всё проще, господа:

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

' Перейти к след./пред. папке в родительском каталоге
' Необходима регистрация "Script helper ActiveX for TC"
' Параметры: 3 (след.); 4 (пред.)
'====================================
With CreateObject("TCScript.Helper")
.LockTC True
.SendCommand 2002
.SendCommand 3303
.SendCommand 205&WScript.Arguments(0)
.SendCommand 2003
.LockTC False
End With
И никаких проблем с клавишами.