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 

[wdx] WinScript Advanced Content Plugin (x86\x64) (new)
Goto page Previous  1, 2, 3, ... 13, 14, 15  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Gentoo69



Joined: 11 Jul 2010
Posts: 68

Post (Separately) Posted: Thu May 19, 2016 20:10    Post subject: Reply with quote

Flasher wrote:
Gentoo69
2.1 Для тестов это крайне неприятная необходимость, когда проверка может возникать в минуту по неск. раз.


Имхо писать и тестить скрипт лучше где-то вне плагина, вы сохраните кучу времени.
Через cmd.exe или через спец. консоль\редактор (как у AutoIt, или AutoHotKey)
Просто добавить в начале скрипта

$filename = "D:\test.txt"
(указать переменную filename c путем к файлу)
и можно запускать.

А потом когда подключаете скрипт к плагину - закомментировать эту строчку.

------------------------------------
Quote:
3. Что-то у меня не получилось. <...>
>>No data from script.

No data from script - означает что не пришло ничего в StdOut (вы не выводили результаты на консоль). При использовании скриптов через exe парсеры - те что указаны в [ExeScriptParsers]) - нужно выводить в конце скрипта результат на консоль. (чуть позже это надо наверное убрать, т.е. в след. версиях эти строчки плагин будет добавлять автоматом в скрипт)
Для Vbs
Проверьте на cmd.exe


Но честно говоря не пойму зачем это нужно для vbs - ведь скрипт получиться медленнее, если прогонять его через exe парсер (wscript.exe), чем через встроенный VBS через COM.
Или это просто тест?


Last edited by Gentoo69 on Thu May 19, 2016 20:26; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Thu May 19, 2016 20:25    Post subject: Reply with quote

Gentoo69 wrote:
Имхо писать и тестить скрипт лучше где-то вне плагина, вы сохраните кучу времени.
Раньше тестил SCP, всё быстро и удобно. Нажал одну кнопку, увидел результат. Вне плагина нет смысла, т.к. по-разному контент и debug возвращается, что обычно и нужно смотреть.
3. Без консоли (сразу в колонку) нельзя реализовать? Я как раз об этом просил.
Gentoo69 wrote:
Но честно говоря не пойму зачем это нужно для vbs - ведь скрипт получиться медленнее, если прогонять его через exe парсер
Не зачемал особо, что медленней (если не брать костыль с потоком). Зачем - для сторонних dll-ок типа TCHelper.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Gentoo69



Joined: 11 Jul 2010
Posts: 68

Post (Separately) Posted: Thu May 19, 2016 20:57    Post subject: Reply with quote

Flasher wrote:

Раньше тестил SCP, всё быстро и удобно. Нажал одну кнопку, увидел результат. Вне плагина нет смысла, т.к. по-разному контент и debug возвращается, что обычно и нужно смотреть.

В WinScriptAdv для языков Vbs, Js и Python используется та же система что и в SCP - скрипт отправляется движку через COM интерфейс. Этот интерфейс позволяет заглядывать в переменные - получать их содержимое.
Т.е. если используете VBS, Js и Python - никакой разницы быть не должно.

Quote:
вне плагина нет смысла, т.к. по-разному контент и debug возвращается,

Должно быть одинаково (или я не понял просто о чем речь).
__________________________________

Если вы используете другие языки, то в них скрипт подается через вызов exe интерпретатора, т.е.:

1. Формируется скриптовый файл, он сохраняется в temp папке.
2. Вызывается exe с параметром - путь к этому файлу скрипту.
3. Читаем результат из StdOut (консоль грубо говоря).

Поэтому такие скрипты должны в конце писать результаты в консоль (StdOut) - возможно в следующих версиях это поменяется.

__________________________________

Расширения скриптов которые указаны в [ExeScriptParsers] - такие скрипты должны возвращать результат в консоль.

Сейчас это ahk, php и au3.

Если вы добавите туда vbs - то все vbs скрипты будут выполняться через указанный парсер (я не проверял, но скорее всего так).

Лучше так не делать, т.к. vbs скрипты работают быстрее через COM, да и не будут работать уже имеющиеся vbs скрипты - т.к. в них нет кода на вывод результатов на консоль.
Лучше закинуть туда другое расширение - например *.vb (правда не знаю подхватит ли его парсер wscript.exe).

Если же расширения не указаны в [ExeScriptParsers] - то в скриптах этих файлов в консоль ничего не нужно возвращать - плагин прочитает их содержимое переменных через COM (сейчас это Vbs, Js и Python).
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Thu May 19, 2016 21:17    Post subject: Reply with quote

Gentoo69 wrote:
никакой разницы быть не должно.
Разница в случае SCP в отсутствии необходимости перезапускать ТС, достаточно обновить панель. Я, собственно, повторяюсь.
Gentoo69 wrote:
Должно быть одинаково (или я не понял просто о чем речь).
Визуальная проверка скорости отображения, возможность возврата (на примере с Sub в SCP), проблема с переполнением буффера памяти (это я не проверял) и т.п.
Gentoo69 wrote:
Лучше так не делать, т.к. vbs скрипты работают быстрее через COM, да и не будут работать уже имеющиеся vbs скрипты - т.к. в них нет кода на вывод результатов на консоль.
Лучше - это не к функционалу vbs, а к функционалу плагина. Мне же первое требуется. vb никак тут не годится. Придумайте, что-нибудь без StdOut.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Gentoo69



Joined: 11 Jul 2010
Posts: 68

Post (Separately) Posted: Thu May 19, 2016 21:47    Post subject: Reply with quote

Flasher wrote:

Разница в случае SCP в отсутствии необходимости перезапускать ТС, достаточно обновить панель. Я, собственно, повторяюсь.

Что такое обновить панель? F2 что-ли?
Т.е. вы изменяете скрипт нажимаете F2 и принимаете новый результат?

В WinScriptAdv для скорости текст скрипта грузиться из файла в память только один раз при старте, после этого он оптимизируется (удаляются комменты, пустые строки итп) и далее отдается только из памяти.
Дальше, при нажатии F2 значения не поменяются, т.к. используется кэш для всех файлов в текущей открытой папке, опять же для оптимизации (т.к. TC может запрашивать одну колонку для всех файлов, а затем остальные колонки повторно для тех же файлов - т.е. кэш нужен чтобы скрипт не выполнялся больше 1 раза для одного файла. ).
SCP этого не делает.

Можно сделать что-то типа Debug опции в ini файле, который отключит все это.

Flasher wrote:
Лучше - это не к функционалу vbs, а к функционалу плагина. Мне же первое требуется. vb никак тут не годится. Придумайте, что-нибудь без StdOut.

Без StdOut возможно сделаю к следующей версии.
Вы опишите для чего нужно ставить другой vbs движок, может мы что-нибудь другое придумаем.
Что такое TCHelper и почему для него нужно пропускать vbs скрипт через exe парсер wscript, почему не достаточно стандартного vbs движка через COM?
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Thu May 19, 2016 21:59    Post subject: Reply with quote

Gentoo69 wrote:
Т.е. вы изменяете скрипт нажимаете F2 и принимаете новый результат?
Или Ctrl+R. Да, новый.
Gentoo69 wrote:
SCP этого не делает.
Я это понимаю. Но, допустим, мне нужно вернуть/учесть индекс файла в панели с каждой сменой сортировки. И что, мне для этого каждый раз перезапускать ТС?
Gentoo69 wrote:
Можно сделать что-то типа Debug опции в ini файле, который отключит все это.
А совместное использование нельзя реализовать? Т.е. для секций, где это требуется, при поставновке значения нового ключа кэш не действует.
Gentoo69 wrote:
Вы опишите для чего нужно ставить другой vbs движок, может мы что-нибудь другое придумаем.
Я ж описал. Для пользования сторонними библиотеками.
Gentoo69 wrote:
Что такое TCHelper и почему для него нужно пропускать vbs скрипт через exe парсер wscript, почему не достаточно стандартного vbs движка через COM?
Линк.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Fri May 20, 2016 10:22; edited 1 time in total
Back to top
View user's profile Send private message
Gentoo69



Joined: 11 Jul 2010
Posts: 68

Post (Separately) Posted: Thu May 19, 2016 22:34    Post subject: Reply with quote

Flasher wrote:
Но, допустим, мне нужно вернуть/учесть индекс файла в панели с каждой сменой сортировки. И что, мне для этого каждый раз перезапускать ТС?

Индекс файла из списка файлов TC?
Нет он тоже поменяется (Если я правильно понял о каком индексе речь идет.), кэшируются только результаты работы скриптов WinScriptAdv для конкретных файлов, из текущей директории.

Чтобы скрипт выполнился повторно, нужно выйти из текущей папки и зайти в нее снова (правда скрипт не загрузится из файла снова).

Flasher wrote:
Я ж описал. Для пользования сторонними библиотеками.

Ну ок, это примерно понятно.
Задам вопрос по другому, а если не менять vbs движок на wscript.exe (в смысле вообще vbs не добавлять в [ExeScriptParsers]), а использовать встроенный в WinScriptAdv - что будет? (или вы его меняли просто для теста?)
Я просто пытаюсь понять что нужно изменить в плагине, возможно добавить новую функцию конкретно для ваших целей.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Thu May 19, 2016 22:44    Post subject: Reply with quote

Gentoo69 wrote:
правда скрипт не загрузится из файла снова
В этом и проблема. Насчёт индекса уже понял, что поспешил с примером.
Gentoo69 wrote:
а если не менять vbs движок на wscript.exe
Толку от этого точно не прибавится.
Gentoo69 wrote:
возможно добавить новую функцию конкретно для ваших целей
Нужно, чтобы вместо встроенного wscript.exe выпонялся указанный для получения данных с помощью незарегистрированных dll.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Gentoo69



Joined: 11 Jul 2010
Posts: 68

Post (Separately) Posted: Fri May 20, 2016 00:16    Post subject: Reply with quote

Flasher

Понятно. Чтобы использовать его в автономных сборках ТС - вам надо было эту ключевую фразу сказать. Ведь запуск скриптов может быть заблокирован в системе кстати - есть такой параметр где то в груп. политике.
Ок, если этот незарегистрированный wscript.exe работает под cmd.exe (тут сам cmd не причем, имеется в виду вообще в винде), то он будет работать и в плагине без проблем.

Проблема только с stdOut.
В следующей версии уберу вывод на консоль в таких скриптах, WriteToStdOut будет ставиться автоматом в конец скрипта.
Придется добавить еще один параметр в ini где будет формат строки для вывода на консоль типа:

vbsStdOutWriteLine=Wscript.Echo("%s")

Итого получим, если используется скрипт (для любого языка) через COM - скрипт остается как есть, если через парсер - плагин автоматом добавляет вывод на консоль переменных "content".

 !  Avada:
Оверквотинг на форуме запрещён! Ненужное избыточное цитирование предыдущих сообщений убрано. Кроме того, пустые строки после цитат добавляются автоматически, ставить их вручную и раздувать размер постов не нужно.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri May 20, 2016 07:53    Post subject: Reply with quote

Gentoo69 wrote:
Ведь запуск скриптов может быть заблокирован в системе кстати - есть такой параметр где то в груп. политике.
Про параметр я знаю. Есть и другой более известный ключ в реестре. Но это совсем другая песня. Тут уже ничего (кроме автоправки ключей) не поделать. Автономный wscript работать так же не будет. Это может помочь только для изменённой системной ассоциации в том же реестре. Но там есть ещё около 20 других зависимостей, некоторые из которых легко создадут проблемы выполнения. В моём же случае суть не в wscript, а именно в dll. Вот почему я прошу сделать ключ для скриптовых секций, а не только секции интерпретатора.
Gentoo69 wrote:
если через парсер - плагин автоматом добавляет вывод на консоль переменных "content"
А что значит "на консоль"?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Gentoo69



Joined: 11 Jul 2010
Posts: 68

Post (Separately) Posted: Fri May 20, 2016 14:38    Post subject: Reply with quote

Flasher wrote:
А что значит "на консоль"?
Плагин прочитает в ини файле формат строки для вывода на консоль для текущего языка:
vbsStdOutWriteLine=Wscript.Echo(%s)

(Это как пример, т.к. там скорее всего Wscript.Echo не подойдет.)
И вставит эту строку в конце скрипта с названиями используемых переменных:

Wscript.Echo(content)
Wscript.Echo(content1)

А потом скормит этот скрипт парсеру.
Итого получим, если используется скрипт (для любого языка) через COM - скрипт остается как есть, если через парсер - плагин автоматом добавляет вывод на консоль переменных "content".
В обоих случаях код скрипта, который редактирует юзер будет одинаковый.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri May 20, 2016 16:05    Post subject: Reply with quote

Gentoo69
Я почему спросил. Вывод на консоль возможен только в случае CScript, а не WScript. Поэтому я не пойму, как плагин перехватит вывод окна, не дав ему появиться.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Gentoo69



Joined: 11 Jul 2010
Posts: 68

Post (Separately) Posted: Fri May 20, 2016 17:45    Post subject: Reply with quote

Flasher

Ну да, для плагина и нужно использовать CScript.
Т.к. WScript не поддерживает StdOut, а плагин в свою очередь не работает с окнами (все окна будут невидимые).

Тут пишут
http://stackoverflow.com/questions/4388879/vbscript-output-to-console

WScript.Echo -
If you run that under wscript.exe (the default handler for the .vbs extension, so what you'll get if you double-click the script) you'll get a "MessageBox" dialog with your text in it.
If you run that under cscript.exe you'll get output in your console window.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri May 20, 2016 18:05    Post subject: Reply with quote

Gentoo69 wrote:
Т.к. WScript не поддерживает StdOut
Как же?
Code:
Content = "Test"
WScript.StdOut.Write Content

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Gentoo69



Joined: 11 Jul 2010
Posts: 68

Post (Separately) Posted: Fri May 20, 2016 18:17    Post subject: Reply with quote

Flasher wrote:
Как же?
Code:
Content = "Test"
WScript.StdOut.Write Content
Выбивает ошибку - Handle Invalid. Запускаю под cmd.exe.

И вот так тоже будет писать ошибку
Code:
Set fso = CreateObject ("Scripting.FileSystemObject")
Set stdout = fso.GetStandardStream (1)
stdout.WriteLine "This will go to standard output."
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
Goto page Previous  1, 2, 3, ... 13, 14, 15  Next
Page 2 of 15

 
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