Обсуждение темы "Обмен кнопками"

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
aLLigator
Сообщения: 167
Зарегистрирован: Чт дек 01, 2011 11:21
Откуда: из тех ворот, что и весь народ...

Сообщение aLLigator »

imig73 ладно, чуть детальнее..
Файл work.abc представляет собой TrueCrypt контейнер (abc это просто расширение файла), по двойному клику на который происходит запуск этого скрипта:

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

Dim strDriveLetter

Dim strPath2App

If WScript.Arguments.Count = 1 Then
	strContainerFile = WScript.Arguments.Item(0)
	
	With WScript.CreateObject("Scripting.FileSystemObject")
		If .FileExists(strContainerFile) Then
			strPath2TrueCrypt = .BuildPath(WScript.CreateObject("Shell.Application").NameSpace("shell:ProgramFiles").self.Path, "TrueCrypt\TrueCrypt.exe")
			
			If .FileExists(strPath2TrueCrypt) Then
				strDriveLetter = Left(.GetBaseName(strContainerFile), 1) & ":"
				
				If Not .DriveExists(strDriveLetter) Then
					WScript.CreateObject("WScript.Shell").Run """" & strPath2TrueCrypt & """ /letter " & strDriveLetter & " /volume """ & strContainerFile & """ /p *** /history n /cache y /mountoption removable /quit", 1, True

					strPath2App = .BuildPath(strDriveLetter, "autorun.vbs")
					
					If .FileExists(strPath2App) Then
						WScript.CreateObject("WScript.Shell").Run """" & strPath2App & """", 1, False
					Else
						WScript.Quit 4
					End If

				Else
					WScript.CreateObject("WScript.Shell").Run """" & strPath2TrueCrypt & """ /dismount " & strDriveLetter & " /quit", 1, False
				End If

			Else
				WScript.Echo "Can't find [" & strPath2TrueCrypt & "]."
				WScript.Quit 3
			End If
		Else
			WScript.Echo "Can't find TrueCrypt container file [" & strContainerFile & "]."
			WScript.Quit 2
		End If
	End With
Else
	WScript.Echo "Usage: " & WScript.ScriptName & " <TrueCrypt container file>"
	WScript.Quit 1
End If

WScript.Quit 0
т.е. тут важно как имя файла так и то что в первый раз идет монтирование, а при повторном "запуске" демонтирование.
Хочу еще чуть автоматизировать и запускать (монтировать/демонтировать) с панели инструментов.
Аватара пользователя
imig73
Сообщения: 285
Зарегистрирован: Вт июн 18, 2013 13:21
Откуда: г. Иркутск

Сообщение imig73 »

aLLigator
К сожалению я не знаю что делать с TrueCrypt контейнером и расширением abc.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

aLLigator
Кнопка с командой cm_ContextMenuInternalCursor не подойдёт?
Аватара пользователя
aLLigator
Сообщения: 167
Зарегистрирован: Чт дек 01, 2011 11:21
Откуда: из тех ворот, что и весь народ...

Сообщение aLLigator »

sa спасибо за предложение, но если переходить в каталог к файлу и выбирать его под курсор то проще сразу сделать двойной клик чем переводить потом с него курсор на панель инструментов, а затем обратно на файл и выпадающее меню.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

aLLigator писал(а):а затем обратно на файл и выпадающее меню
Эту часть можно было бы и автоматизировать.
Только теперь понял, что файл не надо держать под курсором, скорее наоборот.
Можно, конечно, предварительно выполнить пользовательскую команду (на основе cd) для перехода к нужному файлу, затем программный аналог для ENTER, а в конце вернуться обратно...
Что-то наподобие такой сцепки команд: em_cd_work_abc,cm_Return,cm_GotoPreviousDir .
Последний раз редактировалось sa Пн сен 06, 2021 21:54, всего редактировалось 1 раз.
Аватара пользователя
aLLigator
Сообщения: 167
Зарегистрирован: Чт дек 01, 2011 11:21
Откуда: из тех ворот, что и весь народ...

Сообщение aLLigator »

Решил таки свою задачу:

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

TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\TrueCrypt_rm.vbs" "d:\work.edc"

C:\Program Files (x86)\TotalCommander\ICO\sys\edc.ico


0
-1
krmit
Сообщения: 7
Зарегистрирован: Пт ноя 08, 2019 23:01

Сообщение krmit »

Помогите, пожалуйста, доработать кнопочку http://forum.wincmd.ru/viewpost.php?p=66683, чтобы ярлык переименовывался именем папки, в которой лежит исходный файл.
ЗЫ: если кнопкой такое не получится, можно на скрипт заменить.
7995
Сообщения: 2
Зарегистрирован: Пн дек 13, 2021 18:49

Кнопка показать/скрыть папки

Сообщение 7995 »

Подскажите, плз, код для кнопки скрыть/показать папки. Нашел решение только скрывать

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

TOTALCMD#BAR#DATA
cd *.*|*\
WCMICONS.DLL,24
Files only
0
-1
Но это неудобно, т.к. когда скрыл, то экскейп не возвращает значение на все обратно.

Можно ли как-то сделать переключателем?

И еще может быть есть какой-то обходной путь отключить отображение папок всегда сверху, и если я сортирую по дате, то они отображались как и файлы по дате списком, а не над файлами?
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

7995
Здесь приводилась кнопка с использованием утилиты TCFS2. Для её работы потребуется создать в TC пользовательскую команду em_cd с командой cd и параметрами %A%Z.
Как вариант, в кнопке вместо tcm(312) можно записать tem(`em_cd *.*`).
Аватара пользователя
Monarch-LFV
Сообщения: 366
Зарегистрирован: Пн июл 22, 2019 13:20

Сообщение Monarch-LFV »

7995
У меня реализовано через скрипт VBS:

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

'======================================================================
' Сделать скрытыми/нескрытыми выделенные объекты (без рекурсии)

' Параметры:
' {файл-список}

' Пример параметров вызова из TC:
' %WL 
'======================================================================
Option Explicit
on error resume next
Dim FSO, FileList, List, F, object1
Set FSO  = CreateObject("Scripting.FileSystemObject")
FileList = WScript.Arguments(0)
List     = Split(FSO.OpenTextFile(FileList,,,-1).ReadAll, vbNewLine)
For Each F In List
  If F <> "" Then
 	set object1 = CreateObject("Scripting.FileSystemObject").Getfile(F) ' Имя файла
	set object1 = CreateObject("Scripting.FileSystemObject").GetFolder(F) ' Имя папки
	If object1.attributes and 2 Then
          object1.attributes = object1.attributes - 2
   	Else
      	  object1.attributes = object1.attributes + 2
   	End If

  End If
Next

Set FSO = Nothing
Wscript.Quit 0
Создать файл с содержимым, назвать его *.VBS, повесить на кнопку с параметром %WL (или сделать команду по горячей клавише, как я себе сделал по Ctrl+Shift+h). Выделенные объекты скрывает или делает нескрытыми.
7995
Сообщения: 2
Зарегистрирован: Пн дек 13, 2021 18:49

Сообщение 7995 »

Monarch-LFV
Спасибо, но моя задача в оп-посте о другом.
Аватара пользователя
Monarch-LFV
Сообщения: 366
Зарегистрирован: Пн июл 22, 2019 13:20

Сообщение Monarch-LFV »

7995
Да, сорри, дейстивтельно, неправильно понял задачу. Ваша кнопка ставит фильтр, а отменить его соответственно можно по комбинации Ctrl+F10 (вместо приведенного вами Esc). Или другой кнопкой с командой cm_SrcAllFiles.
Или можно, например, назначить кнопке Esc эту команду. Тогда Esc будет работать и в основном своем предназначении отмены (у меня работает, протестил), а также будет сбрасывать фильтр. Для этого нужно в wincmd.ini в секции [Shortcuts] прописать:

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

ESC=cm_SrcAllFiles
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

7995
Для запросов кнопок есть специальная тема, куда во избежание захламления подфорума "Общие вопросы" всё это и переносится.
У клавиши Esc свои задачи, а режим "Все файлы", как было сказано, включается по Ctrl+F10. Переназначать команду cm_SrcAllFiles на Esc я бы не советовал.
Смешанной сортировки файлов с папками в TC нет, о чём говорилось сто раз, учитесь пользоваться поиском по форуму. Соблюдайте правила.
Даже самая богатая фантазия
Не представит себе наши безобразия.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

7995 писал(а):обходной путь отключить отображение папок всегда сверху
Можно отсортировать по дате файлы/папки на стороне (в Excel, к примеру) или вручную и, сохранив их имена (у папок должен быть \ в конце) в текстовый файл, загрузить в панель TC (можно с конкретным пользовательским набором колонок) командой LOADLIST. Только не пытайтесь сортировать колонки в панели заново – папки снова окажутся сверху!
Если такие "Результаты поиска:" устраивают, то дело за скриптом для сортировки по дате и вызова команды LOADLIST.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sa
Как справедливо было замечено, результат такой вставки проживёт ровно до первого же изменения сортировки и выводится только в виде виртуальной папки с результатами поиска (со всеми её ограничениями). Я эту "фичу" заметил сразу же с появлением LOADLIST, но расцениваю её просто как забавный побочный эффект применения указанной команды — и не более того. Сильно сомневаюсь, что для нормальной работы в TC такое может кому-то реально пригодиться.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Ответить