[wdx] WinScript Advanced Content Plugin (x86\x64) (new)
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3, ... 13, 14, 15  Next  :| |:
Total Commander -> Плагины Total Commander

#16:  Author: Gentoo69 PostPosted: Thu May 19, 2016 20:10
    —
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

#17:  Author: FlasherLocation: Москва PostPosted: Thu May 19, 2016 20:25
    —
Gentoo69 wrote:
Имхо писать и тестить скрипт лучше где-то вне плагина, вы сохраните кучу времени.
Раньше тестил SCP, всё быстро и удобно. Нажал одну кнопку, увидел результат. Вне плагина нет смысла, т.к. по-разному контент и debug возвращается, что обычно и нужно смотреть.
3. Без консоли (сразу в колонку) нельзя реализовать? Я как раз об этом просил.
Gentoo69 wrote:
Но честно говоря не пойму зачем это нужно для vbs - ведь скрипт получиться медленнее, если прогонять его через exe парсер
Не зачемал особо, что медленней (если не брать костыль с потоком). Зачем - для сторонних dll-ок типа TCHelper.

#18:  Author: Gentoo69 PostPosted: Thu May 19, 2016 20:57
    —
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).

#19:  Author: FlasherLocation: Москва PostPosted: Thu May 19, 2016 21:17
    —
Gentoo69 wrote:
никакой разницы быть не должно.
Разница в случае SCP в отсутствии необходимости перезапускать ТС, достаточно обновить панель. Я, собственно, повторяюсь.
Gentoo69 wrote:
Должно быть одинаково (или я не понял просто о чем речь).
Визуальная проверка скорости отображения, возможность возврата (на примере с Sub в SCP), проблема с переполнением буффера памяти (это я не проверял) и т.п.
Gentoo69 wrote:
Лучше так не делать, т.к. vbs скрипты работают быстрее через COM, да и не будут работать уже имеющиеся vbs скрипты - т.к. в них нет кода на вывод результатов на консоль.
Лучше - это не к функционалу vbs, а к функционалу плагина. Мне же первое требуется. vb никак тут не годится. Придумайте, что-нибудь без StdOut.

#20:  Author: Gentoo69 PostPosted: Thu May 19, 2016 21:47
    —
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?

#21:  Author: FlasherLocation: Москва PostPosted: Thu May 19, 2016 21:59
    —
Gentoo69 wrote:
Т.е. вы изменяете скрипт нажимаете F2 и принимаете новый результат?
Или Ctrl+R. Да, новый.
Gentoo69 wrote:
SCP этого не делает.
Я это понимаю. Но, допустим, мне нужно вернуть/учесть индекс файла в панели с каждой сменой сортировки. И что, мне для этого каждый раз перезапускать ТС?
Gentoo69 wrote:
Можно сделать что-то типа Debug опции в ini файле, который отключит все это.
А совместное использование нельзя реализовать? Т.е. для секций, где это требуется, при поставновке значения нового ключа кэш не действует.
Gentoo69 wrote:
Вы опишите для чего нужно ставить другой vbs движок, может мы что-нибудь другое придумаем.
Я ж описал. Для пользования сторонними библиотеками.
Gentoo69 wrote:
Что такое TCHelper и почему для него нужно пропускать vbs скрипт через exe парсер wscript, почему не достаточно стандартного vbs движка через COM?
Линк.

Last edited by Flasher on Fri May 20, 2016 10:22; edited 1 time in total

#22:  Author: Gentoo69 PostPosted: Thu May 19, 2016 22:34
    —
Flasher wrote:
Но, допустим, мне нужно вернуть/учесть индекс файла в панели с каждой сменой сортировки. И что, мне для этого каждый раз перезапускать ТС?

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

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

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

Ну ок, это примерно понятно.
Задам вопрос по другому, а если не менять vbs движок на wscript.exe (в смысле вообще vbs не добавлять в [ExeScriptParsers]), а использовать встроенный в WinScriptAdv - что будет? (или вы его меняли просто для теста?)
Я просто пытаюсь понять что нужно изменить в плагине, возможно добавить новую функцию конкретно для ваших целей.

#23:  Author: FlasherLocation: Москва PostPosted: Thu May 19, 2016 22:44
    —
Gentoo69 wrote:
правда скрипт не загрузится из файла снова
В этом и проблема. Насчёт индекса уже понял, что поспешил с примером.
Gentoo69 wrote:
а если не менять vbs движок на wscript.exe
Толку от этого точно не прибавится.
Gentoo69 wrote:
возможно добавить новую функцию конкретно для ваших целей
Нужно, чтобы вместо встроенного wscript.exe выпонялся указанный для получения данных с помощью незарегистрированных dll.

#24:  Author: Gentoo69 PostPosted: Fri May 20, 2016 00:16
    —
Flasher

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

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

vbsStdOutWriteLine=Wscript.Echo("%s")

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

 !  Avada:
Оверквотинг на форуме запрещён! Ненужное избыточное цитирование предыдущих сообщений убрано. Кроме того, пустые строки после цитат добавляются автоматически, ставить их вручную и раздувать размер постов не нужно.

#25:  Author: FlasherLocation: Москва PostPosted: Fri May 20, 2016 07:53
    —
Gentoo69 wrote:
Ведь запуск скриптов может быть заблокирован в системе кстати - есть такой параметр где то в груп. политике.
Про параметр я знаю. Есть и другой более известный ключ в реестре. Но это совсем другая песня. Тут уже ничего (кроме автоправки ключей) не поделать. Автономный wscript работать так же не будет. Это может помочь только для изменённой системной ассоциации в том же реестре. Но там есть ещё около 20 других зависимостей, некоторые из которых легко создадут проблемы выполнения. В моём же случае суть не в wscript, а именно в dll. Вот почему я прошу сделать ключ для скриптовых секций, а не только секции интерпретатора.
Gentoo69 wrote:
если через парсер - плагин автоматом добавляет вывод на консоль переменных "content"
А что значит "на консоль"?

#26:  Author: Gentoo69 PostPosted: Fri May 20, 2016 14:38
    —
Flasher wrote:
А что значит "на консоль"?
Плагин прочитает в ини файле формат строки для вывода на консоль для текущего языка:
vbsStdOutWriteLine=Wscript.Echo(%s)

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

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

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

#27:  Author: FlasherLocation: Москва PostPosted: Fri May 20, 2016 16:05
    —
Gentoo69
Я почему спросил. Вывод на консоль возможен только в случае CScript, а не WScript. Поэтому я не пойму, как плагин перехватит вывод окна, не дав ему появиться.

#28:  Author: Gentoo69 PostPosted: Fri May 20, 2016 17:45
    —
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.

#29:  Author: FlasherLocation: Москва PostPosted: Fri May 20, 2016 18:05
    —
Gentoo69 wrote:
Т.к. WScript не поддерживает StdOut
Как же?
Code:
Content = "Test"
WScript.StdOut.Write Content

#30:  Author: Gentoo69 PostPosted: Fri May 20, 2016 18:17
    —
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."



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3, ... 13, 14, 15  Next  :| |:
Page 2 of 15

Powered by phpBB © 2001, 2005 phpBB Group