View previous topic :: View next topic |
Author |
Message |
Gentoo69
Joined: 11 Jul 2010 Posts: 68
|
(Separately) Posted: Thu May 19, 2016 20:10 Post subject: |
|
|
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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu May 19, 2016 20:25 Post subject: |
|
|
Gentoo69 wrote: | Имхо писать и тестить скрипт лучше где-то вне плагина, вы сохраните кучу времени. | Раньше тестил SCP, всё быстро и удобно. Нажал одну кнопку, увидел результат. Вне плагина нет смысла, т.к. по-разному контент и debug возвращается, что обычно и нужно смотреть.
3. Без консоли (сразу в колонку) нельзя реализовать? Я как раз об этом просил.
Gentoo69 wrote: | Но честно говоря не пойму зачем это нужно для vbs - ведь скрипт получиться медленнее, если прогонять его через exe парсер | Не зачемал особо, что медленней (если не брать костыль с потоком). Зачем - для сторонних dll-ок типа TCHelper. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Gentoo69
Joined: 11 Jul 2010 Posts: 68
|
(Separately) Posted: Thu May 19, 2016 20:57 Post subject: |
|
|
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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu May 19, 2016 21:17 Post subject: |
|
|
Gentoo69 wrote: | никакой разницы быть не должно. | Разница в случае SCP в отсутствии необходимости перезапускать ТС, достаточно обновить панель. Я, собственно, повторяюсь.
Gentoo69 wrote: | Должно быть одинаково (или я не понял просто о чем речь). | Визуальная проверка скорости отображения, возможность возврата (на примере с Sub в SCP), проблема с переполнением буффера памяти (это я не проверял) и т.п.
Gentoo69 wrote: | Лучше так не делать, т.к. vbs скрипты работают быстрее через COM, да и не будут работать уже имеющиеся vbs скрипты - т.к. в них нет кода на вывод результатов на консоль. | Лучше - это не к функционалу vbs, а к функционалу плагина. Мне же первое требуется. vb никак тут не годится. Придумайте, что-нибудь без StdOut. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Gentoo69
Joined: 11 Jul 2010 Posts: 68
|
(Separately) Posted: Thu May 19, 2016 21:47 Post subject: |
|
|
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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu May 19, 2016 21:59 Post subject: |
|
|
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 |
|
|
Gentoo69
Joined: 11 Jul 2010 Posts: 68
|
(Separately) Posted: Thu May 19, 2016 22:34 Post subject: |
|
|
Flasher wrote: | Но, допустим, мне нужно вернуть/учесть индекс файла в панели с каждой сменой сортировки. И что, мне для этого каждый раз перезапускать ТС? |
Индекс файла из списка файлов TC?
Нет он тоже поменяется (Если я правильно понял о каком индексе речь идет.), кэшируются только результаты работы скриптов WinScriptAdv для конкретных файлов, из текущей директории.
Чтобы скрипт выполнился повторно, нужно выйти из текущей папки и зайти в нее снова (правда скрипт не загрузится из файла снова).
Flasher wrote: | Я ж описал. Для пользования сторонними библиотеками. |
Ну ок, это примерно понятно.
Задам вопрос по другому, а если не менять vbs движок на wscript.exe (в смысле вообще vbs не добавлять в [ExeScriptParsers]), а использовать встроенный в WinScriptAdv - что будет? (или вы его меняли просто для теста?)
Я просто пытаюсь понять что нужно изменить в плагине, возможно добавить новую функцию конкретно для ваших целей. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu May 19, 2016 22:44 Post subject: |
|
|
Gentoo69 wrote: | правда скрипт не загрузится из файла снова | В этом и проблема. Насчёт индекса уже понял, что поспешил с примером.
Gentoo69 wrote: | а если не менять vbs движок на wscript.exe | Толку от этого точно не прибавится.
Gentoo69 wrote: | возможно добавить новую функцию конкретно для ваших целей | Нужно, чтобы вместо встроенного wscript.exe выпонялся указанный для получения данных с помощью незарегистрированных dll. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Gentoo69
Joined: 11 Jul 2010 Posts: 68
|
(Separately) Posted: Fri May 20, 2016 00:16 Post subject: |
|
|
Flasher
Понятно. Чтобы использовать его в автономных сборках ТС - вам надо было эту ключевую фразу сказать. Ведь запуск скриптов может быть заблокирован в системе кстати - есть такой параметр где то в груп. политике.
Ок, если этот незарегистрированный wscript.exe работает под cmd.exe (тут сам cmd не причем, имеется в виду вообще в винде), то он будет работать и в плагине без проблем.
Проблема только с stdOut.
В следующей версии уберу вывод на консоль в таких скриптах, WriteToStdOut будет ставиться автоматом в конец скрипта.
Придется добавить еще один параметр в ini где будет формат строки для вывода на консоль типа:
vbsStdOutWriteLine=Wscript.Echo("%s")
Итого получим, если используется скрипт (для любого языка) через COM - скрипт остается как есть, если через парсер - плагин автоматом добавляет вывод на консоль переменных "content".
! | Avada: | Оверквотинг на форуме запрещён! Ненужное избыточное цитирование предыдущих сообщений убрано. Кроме того, пустые строки после цитат добавляются автоматически, ставить их вручную и раздувать размер постов не нужно. | |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri May 20, 2016 07:53 Post subject: |
|
|
Gentoo69 wrote: | Ведь запуск скриптов может быть заблокирован в системе кстати - есть такой параметр где то в груп. политике. | Про параметр я знаю. Есть и другой более известный ключ в реестре. Но это совсем другая песня. Тут уже ничего (кроме автоправки ключей) не поделать. Автономный wscript работать так же не будет. Это может помочь только для изменённой системной ассоциации в том же реестре. Но там есть ещё около 20 других зависимостей, некоторые из которых легко создадут проблемы выполнения. В моём же случае суть не в wscript, а именно в dll. Вот почему я прошу сделать ключ для скриптовых секций, а не только секции интерпретатора.
Gentoo69 wrote: | если через парсер - плагин автоматом добавляет вывод на консоль переменных "content" | А что значит "на консоль"? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Gentoo69
Joined: 11 Jul 2010 Posts: 68
|
(Separately) Posted: Fri May 20, 2016 14:38 Post subject: |
|
|
Flasher wrote: | А что значит "на консоль"? | Плагин прочитает в ини файле формат строки для вывода на консоль для текущего языка:
vbsStdOutWriteLine=Wscript.Echo(%s)
(Это как пример, т.к. там скорее всего Wscript.Echo не подойдет.)
И вставит эту строку в конце скрипта с названиями используемых переменных:
Wscript.Echo(content)
Wscript.Echo(content1)
А потом скормит этот скрипт парсеру.
Итого получим, если используется скрипт (для любого языка) через COM - скрипт остается как есть, если через парсер - плагин автоматом добавляет вывод на консоль переменных "content".
В обоих случаях код скрипта, который редактирует юзер будет одинаковый. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri May 20, 2016 16:05 Post subject: |
|
|
Gentoo69
Я почему спросил. Вывод на консоль возможен только в случае CScript, а не WScript. Поэтому я не пойму, как плагин перехватит вывод окна, не дав ему появиться. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Gentoo69
Joined: 11 Jul 2010 Posts: 68
|
(Separately) Posted: Fri May 20, 2016 17:45 Post subject: |
|
|
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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri May 20, 2016 18:05 Post subject: |
|
|
Gentoo69 wrote: | Т.к. WScript не поддерживает StdOut | Как же? Code: | Content = "Test"
WScript.StdOut.Write Content |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Gentoo69
Joined: 11 Jul 2010 Posts: 68
|
(Separately) Posted: Fri May 20, 2016 18:17 Post subject: |
|
|
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 |
|
|
|
|
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
|