View previous topic :: View next topic |
Author |
Message |
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Nov 25, 2015 19:54 Post subject: Переносной Script Helper ActiveX for TC by Volniy |
|
|
Script Helper ActiveX for TC
Из справки: Quote: | Управление Total Commander-ом из различных программных сред,
поддерживающих COM-технологию. Некоторые команды и функции могут
быть применены в WSH скриптах для целей, никак не связанных с TC. |
Детали работы смотрите в прилагаемом ReadMe.txt.
Постоянная страница компонента.
Уже года 3-4 как пользуюсь портабельным Хелпером, но всё никак руки не доходили опубликовать решение, хотя паре человек обещал.
Что ж, с большим запозданием, но публикую статью на TCKB.
Также сообщаю, что компонент обновлён до версии 1.0.0.14, здесь появился новый метод GetInfo на основе возвращаемых WMCopyData данных.
Один пример приведён в статье. Далее публикую vbs-скрипт, отображающий сразу все варианты. Code: | '===========================================================
' Демонстрация использования метода GetInfo вспомогательного
' для ТС компонента "Script Helper ActiveX for TC by Volniy"
'===========================================================
Set TCHelper = CreateObject("TCScript.Helper")
TCHelper.Pause = 0 : T = vbTab : C = vbCr
For Each N in Split("LP LC LI LN RP RC RI RN SP SC SI SN TP TC TI TN")
Select Case(Mid(N, 2))
Case "P" T1 = "Путь"
Case "C" T1 = "Число объектов"
Case "I" T1 = "№ объекта под курсором"
Case "N" T1 = "Имя объекта под курсором"
End Select
Select Case(Left(N,1))
Case "S" T2 = "активной" : Case "R" T2 = "правой"
Case "T" T2 = "пассивной" : Case "L" T2 = "левой"
End Select : Execute N & "= T1 & "" "" & T2 & """ &_
" панели:"" & T & TCHelper.GetInfo(CStr(N)) & vbCr"
Next: If TCHelper.GetInfo("A") = "L" Then A = "левая" Else A = "правая"
MsgBox T & T & "Активная панель:" & T & T & A & C & C & T & SC & T &_
TC & T & LC & T & RC &T & C & SI & TI & LI & RI & C & SN & TN & LN &_
RN & C & SP & TP & LP & RP,, Space(18) & "Данные WM_CopyData для TC" |
Либо так: Code: | '===========================================================
' Демонстрация использования метода GetInfo вспомогательного
' для ТС компонента "Script Helper ActiveX for TC by Volniy"
'===========================================================
Set TCHelper = CreateObject("TCScript.Helper")
TCHelper.Pause = 0 : T = vbTab : C = vbCr
Call WM_CopyData("LP")("LC")("LI")("LN")("RP")("RC")_
("RI")("RN")("SP")("SC")("SI")("SN")("TP")("TC")("TI")("TN")
If TCHelper.GetInfo("A") = "L" Then A = "левая" Else A = "правая"
MsgBox T & T & "Активная панель:" & T & T & A & C & C & T & SC & T &_
TC & T & LC & T & RC &T & C & SI & TI & LI & RI & C & SN & TN & LN &_
RN & C & SP & TP & LP & RP,, Space(18) & "Данные WM_CopyData для TC"
Function WM_CopyData(Var)
Select Case(Mid(Var, 2))
Case "P" T1 = "Путь"
Case "C" T1 = "Число объектов"
Case "I" T1 = "№ объекта под курсором"
Case "N" T1 = "Имя объекта под курсором"
End Select
Select Case(Left(Var,1))
Case "S" T2 = "активной" : Case "R" T2 = "правой"
Case "T" T2 = "пассивной" : Case "L" T2 = "левой"
End Select : Execute Var & "= T1 & "" "" & T2 & """&_
" панели:"" & T & TCHelper.GetInfo(CStr(Var)) & vbCr"
Set WM_CopyData = GetRef("WM_CopyData")
End Function |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Wed Dec 02, 2015 16:53; edited 3 times in total |
|
Back to top |
|
|
Staniclaw
Joined: 12 Dec 2010 Posts: 533 Location: Ташкент
|
(Separately) Posted: Wed Nov 25, 2015 22:26 Post subject: |
|
|
То есть с этой штукой не нужны никакие копания ни в реестре, ни в системных файлах? Всё необходимое будет на флешке? Класс! _________________ Вечному двигателю -- вечные тормоза!.. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Nov 25, 2015 22:38 Post subject: |
|
|
Staniclaw
Я так понял, то были риторические вопросы, ибо в статье об этом написано, надеюсь, понятным языком. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Staniclaw
Joined: 12 Dec 2010 Posts: 533 Location: Ташкент
|
(Separately) Posted: Wed Nov 25, 2015 22:45 Post subject: |
|
|
Flasher
Они самые. Всё равно класс. Представляю, как обрадуются сборщики. _________________ Вечному двигателю -- вечные тормоза!.. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Nov 29, 2015 13:27 Post subject: |
|
|
В статье исправлен манифест для Хелпера. Компонент по ссылке со сборкой обновлён.
Staniclaw wrote: | Представляю, как обрадуются сборщики | Ну, пока никто из них не объявился, несмотря на старый манифест. Так что не факт, что сборщики если и будут, то публичные. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Dec 23, 2015 14:03 Post subject: |
|
|
Flasher wrote: | В статье исправлен манифест для Хелпера. Компонент по ссылке со сборкой обновлён. |
• Оптимизирован код компонента (по размеру немного ужался).
• Добавлена полная поддержка Юникода.
• Добавлено свойство NoArrayReturn.
• Модифицирован метод GetFilter.
• Добавлен ReadMe.txt с некоторыми правками. Есть одна недоделка с декодированием Юникода, шифрованного в ANSI, как это происходит в INI-файлах.
Но автор 2 недели не появлялся, поэтому, чтобы сильно не тянуть, выложил то, что реализовано на данный момент.
[+] В статье смотрите важное дополнение перед п. 7) (совсем вылетело из головы сразу написать об этом). _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
addhaloka
Joined: 09 Nov 2010 Posts: 169
|
(Separately) Posted: Fri Jan 08, 2016 04:21 Post subject: |
|
|
Flasher
Чёто не хочет работать, выдаёт ошибку Завёлся только после регистрации TCScript.dll, но насколько понимаю, целью было избавиться именно от этого? Проверял с примером отсюда и из статьи, сборка Хелпера также из статьи, TCx64 8.52a, Win 8.1 x64. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jan 08, 2016 13:38 Post subject: |
|
|
addhaloka
Интерпретатор в строку "Команда:" подставлялся тот, что из архива?
И если до этого запускались предыдущие версии, то см. выше [+]. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10263 Location: Россия, Саратов
|
(Separately) Posted: Fri Jan 08, 2016 14:13 Post subject: |
|
|
addhaloka
То, что написано здесь про важное дополнение, учтено? Говоря проще, в кнопке или юзер-команде в поле "Команда" путь к wscript.exe перед путём скрипта дописывался? У меня, пока этого не сделал, было ровно то же сообщение.
P.S. О, чуть опередили... _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
addhaloka
Joined: 09 Nov 2010 Posts: 169
|
(Separately) Posted: Fri Jan 08, 2016 17:58 Post subject: |
|
|
Flasher
С тем, что в архиве - ситуация такая: 7-Zip отказывается его распаковывать, ругаясь на невозможность создать симлинк (может тут собака зарыта - где-то прав не хватает? С запущенным от админа 7-Zip удалось извлечь, но не получается поменять его свойства ), а WinRAR просто его не извлекает. Поэтому скопировал интерпретатор из %windir%\SysWOW64. Предыдущие версии не пробовал, вчера впервые решил глянуть.
Avada
С этим я тоже столкнулся, но уже после выяснения проблемы с TCScript.dll - подумал, что: Hidden text Code: | // это не нужно
%COMMANDER_PATH%\Plugins\EXE\TCScript\wscript.exe
// достаточно системного, т. е. такой команды
wscript.exe |
но как чуть поздней оказалось - нужно.
С зарегистрированной TCScript.dll - всё прекрасно работает. Необходимость регистрации совершенно не напрягает, не вижу в это ничего страшного - обычно для подобных случаев пользуюсь батником, типа такого:
Hidden text Code: | @echo off
cls
rem color 1b
%~d0
cd "%~dp0"
reg query HKCR | findstr /i "TCScript.Helper" >NUL
if not errorlevel 1 (
regsvr32 /u /s TCScript.dll
cls
echo Компонент Script Helper ActiveX for TC удалён из системы
echo Нажмите любую клавишу для выхода . . .
pause >NUL
) else (
regsvr32 /s TCScript.dll
cls
echo Компонент Script Helper ActiveX for TC зарегистрирован в системе
echo Нажмите любую клавишу для выхода . . .
pause >NUL
) |
но хотелось бы разобраться, и как сейчас подумал - на машине без возможности получения адм. прав, батник наверное уже не поможет.
Last edited by addhaloka on Fri Jan 08, 2016 18:18; edited 1 time in total |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jan 08, 2016 18:16 Post subject: |
|
|
addhaloka wrote: | Поэтому скопировал интерпретатор из %windir%\SysWOW64. | Идём в статью и читаем:
Quote: | для компонентов с 32-битной разрядностью из папки %Windir%\SysWOW64 |
addhaloka wrote: | Необходимость регистрации совершенно не напрягает | В таком случае в этой ветке особо и делать нечего. Тут про портабельность. См. предисловие в статье. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Mon Jan 11, 2016 15:07; edited 1 time in total |
|
Back to top |
|
|
addhaloka
Joined: 09 Nov 2010 Posts: 169
|
(Separately) Posted: Fri Jan 08, 2016 18:23 Post subject: |
|
|
Flasher wrote: | Идём в статью и читаем: |
У меня Win 8.1 x64, а в x64 осях всё 32-х битное лежит именно в SysWOW64.
Flasher wrote: | В таком случае в этой ветке особо и делать нечего. |
Ну тогда проехали. Буду сюда заглядывать - может, кто на досуге попробует разобраться, мне чего-то лень. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jan 08, 2016 19:20 Post subject: |
|
|
addhaloka wrote: | в x64 осях всё 32-х битное лежит именно в SysWOW64. | И правда. Надо будет исправить.
В общем, безотносительно версий, имеем попытки вызова. Если была неудачная, то переходим к [+].
Avada
А ты тестировал на TCx64? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10263 Location: Россия, Саратов
|
(Separately) Posted: Fri Jan 08, 2016 20:28 Post subject: |
|
|
Flasher
Нет, только на 32 пока успел. Но сейчас попробовал несколько скриптов на x64 (естественно, уже с другим wscript.exe). Не работает. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Mon Jan 11, 2016 14:36 Post subject: |
|
|
Я проверял на 64-битной системе, используя 32-битный wscript, всё работает как из 32-битного тотала, так и из 64-битного. Компонент на моей машине никогда не устанавливался и не установлен, поэтому портабельность была 146%, я гарантирую это.
Достаточно положить 32-битный wscript.exe (взятый из SysWOW64) в папку с распакованным пакетом из статьи и запускать скрипты только через него (т.е. указывать в командной строке сначала путь к нашей копии wscript, а потом путь к самому скрипту - как и показано в статье), иначе будет запускаться системный wscript, на который манифест из статьи не распространяется (т.к. манифест должен лежать рядом с экзешником), следовательно, никакой портабельной привязки к компоненту не будет.
А ошибка 800A01AD появляется при попытке загрузить модуль другой разрядности (т.е. в данном случае при попытке использования 64-битного wscript). _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Last edited by MVV on Mon Jan 11, 2016 15:00; edited 1 time in total |
|
Back to top |
|
|
|