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 

Использование команды cm_decode без запуска тотала

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Aspin



Joined: 21 Feb 2012
Posts: 3

Post (Separately) Posted: Tue Feb 21, 2012 13:03    Post subject: Использование команды cm_decode без запуска тотала Reply with quote

Задача заключается в том чтобы выполнить команду cm_decode в идеале без запуска тотала.
Собственно вижу три варианта:
1. использовать функцию напрямую из библиотеки тотала
2. настроить тотал таким образом, чтобы при его запуске выполнялась команда cm_decode после чего бы он автоматически закрывался
3. написать скрипт запускающий тотал, выполняющий в нем необходимые действия и закрывающий его после этого

Третий вариант как самый простой реализован, однако, есть проблемы связанные с тем что при наличии уже открытого тотала скрипт начинает работать в нем, что очень плохо. Скорость и надежность тоже оставляют желать лучшего.

Возможно ли реализовать первый вариант малой кровью?
Можно ли так настроить тотал как во втором варианте и как это сделать?
Back to top
View user's profile Send private message
Mellomann



Joined: 07 Sep 2009
Posts: 709

Post (Separately) Posted: Tue Feb 21, 2012 13:38    Post subject: Reply with quote

Aspin
Что мешает запускать новый тотал с ключом "/N"?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Feb 21, 2012 14:42    Post subject: Reply with quote

К сожалению, я вообще не понял, какое отношение имеет к Тоталу то, что нужно без его открытия и, соответственно, реализуется сторонними средствами (утилитами)...
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2586
Location: Большая деревня Москва

Post (Separately) Posted: Tue Feb 21, 2012 17:32    Post subject: Reply with quote

А почему никого не смущает то, что команда cm_decode требует, чтобы курсор был установлен на декодируемый файл? При запуске Тотала курсор встает на [..] и вызов cm_decode заведомо даст ошибку. Значит, файл должен быть задан. Как? Абсолютно, или относительно текущего пути? Как осуществлять переход к файлу?

И еще вопрос. Наверняка есть сторонний софт, осуществляющий такое перекодирование. При чем здесь именно функция Тотала, тем более что после выполнения команды он закрывается?
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Feb 21, 2012 17:51    Post subject: Reply with quote

Вахмурка wrote:
Как? Абсолютно, или относительно текущего пути? Как осуществлять переход к файлу?
Ну, примерно так: totalcmd.exe /N /L=c:\file.b64 /P=L.

Вахмурка wrote:
Наверняка есть сторонний софт, осуществляющий такое перекодирование.
Есть. И я его приводил в довесок к своему скрипту декодирования. Об остальном написал выше.
Back to top
View user's profile Send private message
Aspin



Joined: 21 Feb 2012
Posts: 3

Post (Separately) Posted: Tue Feb 21, 2012 21:33    Post subject: Reply with quote

Да, мне нужна именно эта функция в тотале и только она.
На счет стороннего софта пишите конкретные названия, а лучше ссылки откуда скачать. Особенно интересно, если есть опыт использования. Если заинтересует, то буду тестировать. Пока есть опыт говорящий о том, что функция в тотале на данный момент обрабатывает материал лучше чем опробованные аналоги в том числе самописные.

Спасибо за ключ для запуска нового экземпляра программы. Изменю скрипт, который как раз запускает, выбирает нужную папку и файл и вызывает функцию.
В ней не хватает только того чтобы окно закрыть и еще не понятно как получить дескриптор именно нового окна.
Скрипт писал на PowerPro, к сожалению полноценного описания найти не удалось поэтому просто переделывал приведенные примеры в кратком мануале и следовательно что было то есть, на полноту претендовать не могу.

Можно ли настроить сам тотал как во втором варианте без PowerPro, т.е. чтобы запускался, делал что надо и закрывался?
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2586
Location: Большая деревня Москва

Post (Separately) Posted: Tue Feb 21, 2012 23:05    Post subject: Reply with quote

Quote:
На счет стороннего софта пишите конкретные названия, а лучше ссылки откуда скачать
См. выше пост Flasher'а.
Quote:
Скрипт писал на PowerPro
А не скинешь в ЛС код? Посмотрю на досуге. Авось, что и предложу. А может, наоборот, свой опыт обогащу.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Tue Feb 21, 2012 23:43    Post subject: Reply with quote

Quote:
На счет стороннего софта пишите конкретные названия, а лучше ссылки откуда скачать

Для UUE/XXE достаточно имеющегося практически на каждом компе winRAR-a
Back to top
View user's profile Send private message
Aspin



Joined: 21 Feb 2012
Posts: 3

Post (Separately) Posted: Wed Feb 22, 2012 00:06    Post subject: Reply with quote

Вахмурка, вот тот скрипт:
do("c:\totalcmd\Totalcmd.exe", "/o /l=c:/test /r=c:/testout")
*wait for 200
do("c:\totalcmd\Totalcmd.exe", "/o /l=c:/test /r=c:/testout")
local hwnd=win.handle("c=TTOTAL_CMD")
;Выбираем левую панель
win.sendmessage(hwnd,0x400+51,4001,0)
*wait for 200
*keys {end}
*wait for 50
;Вызываем команду DECODE
win.Postmessage(hwnd,0x400+51,563,0)
*wait for 100
;Жмем энтер в диалоговом окне
*keys {enter}

В папке c:/test должен лежать один файл для работы команды decode.
Два раза подряд вызываю тотал потому что он иногда подтупливал при большом количестве запущенных экземпляров, так стало лучше.
Вейты на случай высокой загрузки системы стоит оставить.

Дескриптор я получаю каким-то странным способом
local hwnd=win.handle("c=TTOTAL_CMD")
никогда с этим не работать не приходилось, но я понял так что он таким образом находит сразу все окна тотала, а выделяем последнее в списке.
Вопрос: как мне получить именно дескриптор нового открывающегося скриптом окна, если я буду использовать ключ /N, т.е. напишу
do("c:\totalcmd\Totalcmd.exe", "/N /o /l=c:/test /r=c:/testout")
Может мне прям эта процедура вернет дексриптор возникающего окна?


Добавлено спустя 8 минут:

Flasher wrote:
Есть. И я его приводил в довесок к своему скрипту декодирования. Об остальном написал выше.

Я на этом форуме первый день, уже второй, но, к сожалению, не видел этого скрипта. Было бы чудесно получить ссылку на него в личку.


Мне требуется снятие протокола MIME, приблуды (утилиты) способные это сделать в студию. О достойных внимания вы получите подробный отчет и сравнительный анализ на многих миллионах сообщений! Smile
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Feb 22, 2012 01:00    Post subject: Reply with quote

Aspin
В памятке - первая ссылка на топик, в нём - на посл. странице.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2692

Post (Separately) Posted: Wed Feb 22, 2012 12:02    Post subject: Reply with quote

Aspin wrote:
Можно ли настроить сам тотал как во втором варианте без PowerPro, т.е. чтобы запускался, делал что надо и закрывался?
Не подойдёт ли вариант с использованием плагина Autorun? Он позволит при запуске Total Commander (точнее, его дополнительного экземпляра) выполнить команду cm_decode, задать задержку, затем выполнить команду cm_Exit. Единственно, что потребуется дополнительно, это послать нажатие “Enter”, для чего можно использовать простейший скрипт SendEnter.vbs:
Code:
'===========================================================
' Посылает нажатие клавиши Enter
'===========================================================
WScript.CreateObject("WScript.Shell").SendKeys "{Enter}"
Wscript.Quit
Соответственно в файле конфигурации плагина Autorun надо записать что-то вроде:
Code:
Sleep 500
SendCommand cm_Decode
ShellExec "%COMMANDER_PATH%\VBS\SendEnter.vbs"
Sleep 1000
SendCommand cm_Exit
Для использования этого варианта можно создать системную ассоциацию для соответствующего типа (типов) файлов примерно такого вида:
Code:
c:\totalcmd\Totalcmd.exe /I=c:\totalcmd\wincmd_test.ini /N /P=L /R=c:/testout /L="%1"
P.S.
1. В основном варианте wincmd.ini ссылки (в разделе [ContentPlugins]) на autorun.wdx либо вовсе не должно быть, либо это должна быть ссылка на копию плагина с другим Autorun.cfg. Иначе основной TC будет открываться и тут же закрываться.
2. Ключ DecodeAutoRename в разделе [Configuration] нужно установить равным 1, чтобы не возникали вопросы с переименованием результирующих файлов в каталоге testout.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2586
Location: Большая деревня Москва

Post (Separately) Posted: Wed Feb 22, 2012 19:51    Post subject: Reply with quote

Quote:
Дескриптор я получаю каким-то странным способом
local hwnd=win.handle("c=TTOTAL_CMD")
Почему странным? Совершенно законный способ.
Quote:
Вопрос: как мне получить именно дескриптор нового открывающегося скриптом окна
Навскидку вижу два способа:
1) Получить заголовок окна и выделить оттуда номер текущей копии в квадратных скобках. К сожалению, способ не универсален, потому как этот номер отключается в настройках;
2) Способ длиннее, но универсальнее. Получить список дескрипторов всех окно с классом TTOTAL_CMD. Запустить Тотал и вновь получить список. Он пополнится новым пунктом. Сравнивая два списка, находим этот новый пункт. Это и есть дескриптор нового окна.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
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