AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Scripts plugin
Goto page Previous  1, 2, 3 ... 27, 28, 29 ... 56, 57, 58  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  
Author Message
Infocatcher



Joined: 06 Aug 2007
Posts: 1648

PostPosted: Fri Jan 14, 2011 5:11 pm    Post subject: Reply with quote

Instructor wrote:
Исправлено: ошибка при закрытии программы с открытым немодальным диалогом (Win7).
Спасибо! Smile
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5524

PostPosted: Sat Jan 15, 2011 10:15 am    Post subject: Reply with quote

Добавлено: дублирующий метод WScript.Arguments.Count для WScript.Arguments.Length.

Added: duplicate method WScript.Arguments.Count for WScript.Arguments.Length.


Scripts plugin v7.8
Back to top
View user's profile Send private message Send e-mail
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5524

PostPosted: Sat Jan 15, 2011 11:26 am    Post subject: Reply with quote

Исправлено: передача аргумента в VBS скриптах.

Fixed: passing arguments in VBS scripts.


Scripts plugin v7.9
Back to top
View user's profile Send private message Send e-mail
FeyFre



Joined: 07 Aug 2007
Posts: 2061
Location: Vinnitsa, Ukraine

PostPosted: Sat Jan 15, 2011 11:27 am    Post subject: Reply with quote

Quote:
Добавлено: дублирующий метод WScript.Arguments.Count для WScript.Arguments.Length.
Code:
  //WScript.Arguments object
  [uuid(DBE547D2-2917-4945-A73E-5E583C3F2EB8), helpstring("IWArguments object"), object]
  interface IWArguments : IDispatch
  {
    //"Retrive argument by index."
    [id(DISPID_VALUE), propget] HRESULT Item(int nIndex, [out, retval] BSTR *wpItem);

    //"Get number of arguments."
    [id(1), propget] HRESULT Length([out, retval] int *nItems);

    //"Get number of arguments."
    [id(2), propget] HRESULT Count([out, retval] int *nItems);
  };
Со всем уважением, но Count - метод, а не свойство. Источник
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5524

PostPosted: Sat Jan 15, 2011 11:36 am    Post subject: Reply with quote

FeyFre
Изменил хотя видится, что для VBScript это роли не играет.
Back to top
View user's profile Send private message Send e-mail
FeyFre



Joined: 07 Aug 2007
Posts: 2061
Location: Vinnitsa, Ukraine

PostPosted: Sat Jan 15, 2011 12:50 pm    Post subject: Reply with quote

Instructor
Зато в JS играет, и в других языках будет играть.

Кстати, о других языках. Скрипты с расширением wsf не желают выполняться. Пишет "сервер сценариев не найден". В свою очередь cscript/wscript выполняют всё как надо. (И расширения wsh это тоже касается). Может стоит модернизировать алгоритм поиска годных для выполнения скриптовых файлов?
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5524

PostPosted: Mon Jan 17, 2011 4:36 pm    Post subject: Reply with quote

FeyFre wrote:
Может стоит модернизировать алгоритм поиска годных для выполнения скриптовых файлов?
Да, убрал. Wsf и wsh файлы являются лишь посредниками для JS и VBS, а их посредничество, насколько я вижу, держится на WScript.exe/CScript.exe.
Back to top
View user's profile Send private message Send e-mail
FeyFre



Joined: 07 Aug 2007
Posts: 2061
Location: Vinnitsa, Ukraine

PostPosted: Mon Jan 17, 2011 5:07 pm    Post subject: Reply with quote

Instructor
Ну при желании можно и плагином научиться понимать например wsf файлы. Очень было бы неплохо для составления библиотек файлов. Нужно посмотреть сделано ли это ещё где-нибудь(например в wine)
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
FeyFre



Joined: 07 Aug 2007
Posts: 2061
Location: Vinnitsa, Ukraine

PostPosted: Thu Jan 27, 2011 5:25 pm    Post subject: Reply with quote

Опять таки фич.реквест к плагину. И как ни странно, касается моего предыдущего поста(Раз уж с wsf и wsh не судьба)
Речь идет о библиотеках скриптов, точнее о библиотеках для скриптов. Как я это вижу:
В основном скрипте делаем такой вызов:
Code:
AkelPad.Library("library")
Метод Library(условное название) получает аргументом имя файла-библиотеки, которую нужно загрузить. Искать библиотеку будет в наперед определенном месте(например в AkelFiles\Plugs\Scripts\libraries) по такому алгоритму:
1. Если расширение текущего(основного) скрипта xxx(js vbs) то ищем там скриптовой файл library.xxx и выполняем его(он в свою очередь создает глобальные объекты)
2. Иначе ищем файл library.dll - бинарный платформозависимый модуль, написанный на любом удобном языке. Короче плагин к плагину, который в скрипт добавляет глобальные функции. Ну и к этим функция с основного скрипта можно обращаться. В чем выгоден такой подход? В том, что транслируемыми языками(c/c++,delphi, пр) высокого уровня проще добираться до того или иного API и проще налаживать, чем с помощью oSys.Call() (а в некоторых случаях это вообще не возможно сделать через oSys.Call() - могу привести пример)
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
VladSh



Joined: 29 Nov 2006
Posts: 2704
Location: Киев, Русь

PostPosted: Fri Jan 28, 2011 7:57 am    Post subject: Reply with quote

FeyFre wrote:
В основном скрипте делаем такой вызов:
Code:
AkelPad.Library("library")
Специальный метод для подключения - здорово! Можно было бы назвать Use или Include (я смотрел, в некоторых редакторах он называется Include).
Но без пути не гибко; я предлагаю для скриптов завернуть в метод имеющуюся логику:
Code:
eval(AkelPad.ReadFile(AkelPad.GetAkelDir(5) + "\\MyScript.js"));
в
Code:
AkelPad.Include(AkelPad.GetAkelDir(5) + "\\MyLibrary.dll")   //dll, js, vbs и т.п...
т.о. можно будет передавать и внешние (не AkelFiles) пути.
Ну и возвращать методом True (нашёл и подключил) или False (не смог).
Желателен ещё необязательный Boolean-параметр "Выводить или не выводить сообщение об ошибке" (по умолчанию "выводить").

Люди за такой метод только скажут спасибо!
Back to top
View user's profile Send private message Visit poster's website
Fr0sT



Joined: 24 Jul 2007
Posts: 876

PostPosted: Fri Jan 28, 2011 11:42 am    Post subject: Reply with quote

Quote:
ищем файл library.dll - бинарный платформозависимый модуль, написанный на любом удобном языке

Один-единственный модуль? А кто его будет поддерживать? И решать, какие функции добавить, а какие нет? Тогда уж делать полноценный LoadLibrary("..."), но тогда вопрос, как указать, что функция должна грузиться из такой-то длл-ки. Надо будет делать что-то вроде
hLib = LoadLibrary("...");
ImportFunctions(hLib, "Func1; Func2; Func3");
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2061
Location: Vinnitsa, Ukraine

PostPosted: Fri Jan 28, 2011 11:49 am    Post subject: Reply with quote

Include для DLL - так лучше не делать - многие не поймут, да(или поймут не правильно).
Quote:
Ну и возвращать методом True (нашёл и подключил) или False (не смог).
Желателен ещё необязательный Boolean-параметр "Выводить или не выводить сообщение об ошибке" (по умолчанию "выводить").
Я высказал упрощенную идею. Детали уже все продуманы(точнее одолжены кое-где), ну например:
1. Возвращать не буль успешности а объект-namesapce.(null если не судьба).Например
Code:
var user32 = AkelPad.Library('user32');
user32.CreateWindowEx

2. Этот же объект-namespace становиться доступен глобально:
Code:
AkelPad.Library('gdi32');
gdi32.CreateWindowEx

3. Алгоритм поиска можно в принципе сделать настраиваим:
Code:
AkelPad.LibPath = "C:\\mydir1\\mydir2\\?.js;C:\\mydir1\\mydir2\\?.vbs;C:\\mydir1\\mydir2\\?.dll"
(? заменяется указаным именем и оттуда пытаются что-то загрузить)
В общем, прототипом этого всего есть модульная система некоторого популярного скриптового языка. К сожалению сам язык как WSH ScriptingEngine не реализован(и никто не желает этого делать, а я сам не справлюсь). Вот я решил выдернуть оттуда хотя бы что-то хорошее и прикрутить в к хорошей программе.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
FeyFre



Joined: 07 Aug 2007
Posts: 2061
Location: Vinnitsa, Ukraine

PostPosted: Fri Jan 28, 2011 1:46 pm    Post subject: Reply with quote

Quote:
Один-единственный модуль? А кто его будет поддерживать?
А кто поддерживать будет плагины, если автор окочурится через два дня?
Quote:
И решать, какие функции добавить, а какие нет?
В последней инстанции - автор. Думаю автор всё-таки выслушает пожелания пользователей. А если нет - ну дык я не предлагаю полное замещение AkelPad.SystemFunction, я предлагаю облегчить жизнь скриптописателям.(Здорово же Вам облегчает жизнь new ActiveXObject("Scripting.FileSystemObject") вместо oSys.Call("kernel32::FindFirstFile"+_TCHAR) )
Quote:
hLib = LoadLibrary("...");
ImportFunctions(hLib, "Func1; Func2; Func3");
Ну это решает только часть проблемы. Да и велосипедостроением попахивает(в смысле TypeLib)
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
VladSh



Joined: 29 Nov 2006
Posts: 2704
Location: Киев, Русь

PostPosted: Fri Jan 28, 2011 2:24 pm    Post subject: Reply with quote

FeyFre wrote:
Я высказал упрощенную идею. Детали уже все продуманы(точнее одолжены кое-где)...
Вот я решил выдернуть оттуда хотя бы что-то хорошее и прикрутить в к хорошей программе.
1,2 идея понравилась, 3-я - нет (не нравится сам факт поиска и перебора путей где-то, если я хочу подключить 1 файл, который лежит по точно известному мне пути).

FeyFre wrote:
...я предлагаю облегчить жизнь скриптописателям.(Здорово же Вам облегчает жизнь new ActiveXObject("Scripting.FileSystemObject") вместо oSys.Call("kernel32::FindFirstFile"+_TCHAR) )
Реально облегчает!
И вообще, писать один и тот же код, который, к тому же, плохочитабелен - это очень НЕхорошая идея.

P.S. В тему: хотелось бы более лёгкого получения инфы от проги, чем этот путь (смотрел скрипт).
Back to top
View user's profile Send private message Visit poster's website
Fr0sT



Joined: 24 Jul 2007
Posts: 876

PostPosted: Fri Jan 28, 2011 2:27 pm    Post subject: Reply with quote

Quote:
А кто поддерживать будет плагины, если автор окочурится через два дня?

Ну то есть предполагается это тоже на Инструктора повесить? В таком случае легче в сам плагин функции встраивать.
Quote:
Ну это решает только часть проблемы. Да и велосипедостроением попахивает

А на мой взгляд, как раз вариант с одной единственной либой попахивает костылём. Тем более что после реализации подгрузки из захардкоденной либы до произвольных либ остается один шаг.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins All times are GMT
Goto page Previous  1, 2, 3 ... 27, 28, 29 ... 56, 57, 58  Next
Page 28 of 58

 
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


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group