Обмен кнопками

Если вы хотите поделиться с другими пользователями секретами Total Commander, знаете интересные опции, приемы, настройки, то вам сюда.

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

Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Кнопка для создания SFX-архива

Сообщение gora »

Подскажите как создать кнопку для создания SFX-архива (7zip)?
Исходные данные:
1 В папке, открытой на одной из панелей TC, находятся файлы: конфигурации (например, config.txt), 7z-архив (например, archive.7z) и SFX-модуль (например, 7zSD.sfx).
2 Выделяем два файла config.txt и archive.7z на панели и нажимает кнопку (которая и нужна), а лучше перетаскиваем на нее эти файлы (если это не слишком усложнит задачу).
3 Выполняется "преобразование" известной командой - "copy /b 7zSD.sfx + config.txt + archive.7z archive.exe" и создается SFX-архив archive.exe в этой же папке.
4 Файлы конфигурации и 7z-архива всегда разные (выделяются пользователем).
5 Имя SFX-архива всегда формируется из имени 7z архива заменой расширения с .7z на .exe, и, если такой файл в этой папке уже существует, то новый переписывает старый.
6 Файл SFX-модуля может не лежать в этой же папке, но имеет постоянное место на диске и путь к нему можно прописать руками.
Буду рад любой помощи т.к. сам в "скриптописательстве" ноль.
Аватара пользователя
Maximus
Сообщения: 927
Зарегистрирован: Чт апр 07, 2005 10:51
Откуда: Украина, Кировоградская обл., г. Знаменка
Контактная информация:

Сообщение Maximus »

А кто может придумать кнопку для перехода в ждущий режим?
shutdown такого не умет...
Аватара пользователя
DeathStalker
Сообщения: 331
Зарегистрирован: Пт сен 01, 2006 10:53
Откуда: Санкт-Петербург

Сообщение DeathStalker »

Maximus
LocKtaR-o-DarK писал(а):

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

TOTALCMD#BAR#DATA
rundll32 powrprof.dll,SetSuspendState

shell32.dll,211
Спящий режим
Billy_Bons
Сообщения: 5
Зарегистрирован: Пт мар 03, 2006 21:46

Сообщение Billy_Bons »

Кнопки для выключения, перезагрузки компьютера и выхода из системы с диалогом подтверждения действия (используется утилита NirCmd 1.85):

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

TOTALCMD#BAR#DATA
nircmd qboxcom "Выключить компьютер?" "Завершение работы" exitwin poweroff

shell32.dll,215
Выключить компьютер
%COMMANDER_PATH%\tools\nircmd\

-1

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

TOTALCMD#BAR#DATA
nircmd qboxcom "Перезагрузить компьютер?" "Завершение работы" exitwin reboot

shell32.dll,217
Перезагрузить компьютер
%COMMANDER_PATH%\tools\nircmd\

-1

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

TOTALCMD#BAR#DATA
nircmd qboxcom "Выйти из системы?" "Завершение работы" exitwin  logoff

shell32.dll,211
Выход из системы
%COMMANDER_PATH%\tools\nircmd\

-1
Вместо %COMMANDER_PATH%\tools\nircmd\ необходимо, разумеется, указать свой путь до nircmd.exe
Аватара пользователя
Maximus
Сообщения: 927
Зарегистрирован: Чт апр 07, 2005 10:51
Откуда: Украина, Кировоградская обл., г. Знаменка
Контактная информация:

Сообщение Maximus »

Спящий режим
Просмотрел.
Кстати, спящий от ждущего отличается!
Аватара пользователя
DeathStalker
Сообщения: 331
Зарегистрирован: Пт сен 01, 2006 10:53
Откуда: Санкт-Петербург

Сообщение DeathStalker »

Maximus
Команда одна и таже для обоих режимов.
НО чтобы компьютер погружался в ждущий режим надо снять галочку Разрешить использование спящего режима (Панель управления->Электропитание->Спящий режим)
Аватара пользователя
LocKtaR-o-DarK
Сообщения: 349
Зарегистрирован: Пт авг 12, 2005 04:20
Откуда: Москва
Контактная информация:

Сообщение LocKtaR-o-DarK »

Компиляция скрипта INNO

гуем

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

TOTALCMD#BAR#DATA
"путь\до\Inno Setup\Compil32"
/cc %N
путь\до\Inno Setup\ISCmplr.dll
Компиляция скрипта INNO
комстрокой

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

TOTALCMD#BAR#DATA
"путь\до\Inno Setup\ISCC"
%N
путь\до\Inno Setup\ISCmplr.dll
Компиляция скрипта INNO

1
-1
Изображение    Изображение    Изображение
Аватара пользователя
DeathStalker
Сообщения: 331
Зарегистрирован: Пт сен 01, 2006 10:53
Откуда: Санкт-Петербург

Сообщение DeathStalker »

Maximus
Поизучал вчера мат. часть и придумал как можно компьютер погружать в спящий и ждущий режимы. Надо создать для спящего режима батник с таким содержимым:

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

powercfg /h on
rundll32 powrprof.dll,SetSuspendState
А для ждущего с таким:

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

powercfg /h off
rundll32 powrprof.dll,SetSuspendState
Аватара пользователя
Zorroz
Сообщения: 308
Зарегистрирован: Чт дек 16, 2004 10:40
Откуда: Россия, Иркутская обл., г. Ангарск

Сообщение Zorroz »

Кнопку для сжатия базы данных эскизов. Все три опции в настройках включены.
Когда ангелу обрезают крылья, он учится летать на метле...
Аватара пользователя
DeathStalker
Сообщения: 331
Зарегистрирован: Пт сен 01, 2006 10:53
Откуда: Санкт-Петербург

Сообщение DeathStalker »

Zorroz
Могу предложить скрипт (Script Helper), у него есть минус он работает с интерфейсом ТС, принцип действия - открывает диалог Настройка:эскизы и нажимает кнопку Запуск. Скрипт писался под TC7pb1, работоспособность для других версий ТС не проверял.

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

Dim TCS, T, i, j
Set TCS = CreateObject("TCSCRIPT.Helper")
TCS.SendCommand "cm_ThumbnailsConfig"
TCS.LockTC True
TCS.SendKeystroke "{TAB 22}"
TCS.SendKeystroke "{ENTER}"
TCS.SendKeystroke "{ENTER}"
TCS.SendKeystroke "{ENTER}"
TCS.LockTC False
Set TCS = Nothing
WScript.Quit
Гугль - это Матрица, чем меньше его спрашивать, тем слабее будут машины во время Великой Битвы
TC10.00b6 x86 Windows 10 x64 (Windows 7 x64)
Аватара пользователя
Zorroz
Сообщения: 308
Зарегистрирован: Чт дек 16, 2004 10:40
Откуда: Россия, Иркутская обл., г. Ангарск

Сообщение Zorroz »

DeathStalker
Никогда такого глюка еще не видел! Скрипт не хочет работать, появляется окно настроек и начинает дико мегать, потом ТС вылетает.
Если попробовать запустить еще раз, то открывается 2 копии system.ini в блокноте.
Когда ангелу обрезают крылья, он учится летать на метле...
Аватара пользователя
DeathStalker
Сообщения: 331
Зарегистрирован: Пт сен 01, 2006 10:53
Откуда: Санкт-Петербург

Сообщение DeathStalker »

Попробуй этот вариант, TCS.Pause=1000 - время задержки в миллисекундах

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

Dim TCS, T, i, j
Set TCS = CreateObject("TCSCRIPT.Helper")
TCS.SendCommand "cm_ThumbnailsConfig"
TCS.LockTC True
TCS.Pause=1000
TCS.SendKeystroke "{TAB 22}"
TCS.Pause=1000
TCS.SendKeystroke "{ENTER}"
TCS.Pause=1000
TCS.SendKeystroke "{ENTER}"
TCS.Pause=1000
TCS.SendKeystroke "{ENTER}"
TCS.LockTC False
Set TCS = Nothing
WScript.Quit
Гугль - это Матрица, чем меньше его спрашивать, тем слабее будут машины во время Великой Битвы
TC10.00b6 x86 Windows 10 x64 (Windows 7 x64)
Аватара пользователя
Zorroz
Сообщения: 308
Зарегистрирован: Чт дек 16, 2004 10:40
Откуда: Россия, Иркутская обл., г. Ангарск

Сообщение Zorroz »

DeathStalker
По первому скрипту. Что то пытается сделать, но потом говорит что не удалось открыть tcthumbs.frl и предлагает с помощью чего открыть его.
Второй скрипт выдает тоже самое.
Но самое странное вот что. Если удалить какие-нибудь рисунки(база эскизов изменилась) то появляются ошибки. Если ничего не удалять, то вроде скрипт выполняется. :(
Когда ангелу обрезают крылья, он учится летать на метле...
Аватара пользователя
DeathStalker
Сообщения: 331
Зарегистрирован: Пт сен 01, 2006 10:53
Откуда: Санкт-Петербург

Сообщение DeathStalker »

Zorroz
В данном скрипте устанавливаюся три опции:
1 Удалить эскизы для отсутствующих файлов
2 Удалить эскизы для извлечённых CD-дисков
3 Удалить эскизы для недоступных дисков (напр., сетевых или USB)
и запускается сжатие базы эскизов.
Код для кнопки

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Scripts\Thumb.vbs 100

WScript.exe,3
Сжатие базы эскизов
%COMMANDER_PATH%\Scripts\

-1
Код скрипта

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

Dim TCS, T, i
Set TCS = CreateObject("TCSCRIPT.Helper")
if WScript.Arguments.Count > 0 then
   T = WScript.Arguments(0) 'T задержка равна аргументу заданному в качастве параметра
else
   WScript.Quit 'Выход если параметр (задержка) не задана
end if
TCS.SendCommand "cm_ThumbnailsConfig" ' Открытие диалога настроек эскизов
For i=1 to 19  ' Цикл с 19 итерациями
   TCS.Pause= T ' Задержка
   TCS.SendKeystroke "{TAB}" ' Передает активному окну TC нажатие клавиши Tab, как если бы она были нажаты на клавиатуре.
Next
For i=1 to 3 ' Цикл с 3 итерациями
   TCS.Pause= T ' Задержка
   TCS.SendKeystroke "{ }"  ' Передает активному окну TC нажатие клавиши Пробел, как если бы она были нажаты на клавиатуре.
   TCS.SendKeystroke "{TAB}" ' Передает активному окну TC нажатие клавиши Tab, как если бы она были нажаты на клавиатуре.
Next
For i=1 to 3 ' Цикл с 3 итерациями
  TCS.Pause= T ' Задержка
  TCS.SendKeystroke "{ENTER}" ' Передает активному окну TC нажатие клавиши Enter, как если бы она были нажаты на клавиатуре.
Next
Set TCS = Nothing
WScript.Quit
Добавил комментариев чтобы было понятно как скрипт работает. Задав задержку (в коде кнопки цифра после имени скрипта, указывается в миллисекундах) больше можно посмотреть порядок выполнения действий Тотал Коммандером. Скрипт написан для TC7pb1.
Zorroz если возникнут и с ним проблемы, то пиши в личные сообщения.
Гугль - это Матрица, чем меньше его спрашивать, тем слабее будут машины во время Великой Битвы
TC10.00b6 x86 Windows 10 x64 (Windows 7 x64)
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

2 DeathStalker
Не нужно повторять код TCS.Pause= T, тем более в цикле. Это же не метод, а свойство. Менять его значение нужно только в случае переопределения задержки выполнения команд (задержка уже реализована внутри хелпера). Короче, достаточно одного вызова вначале скрипта, там где уже задано T.
Ответить