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 ... 10, 11, 12 ... 69, 70, 71  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  
Author Message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 6250

PostPosted: Tue Mar 31, 2009 3:11 pm    Post subject: Re: another bug? Reply with quote

Surveyor
ReplaceSel - is the command to insert specified text. If selection exists it will be replaced. Command(4155) is equal to AkelPad.ReplaceSel(AkelPad.GetClipboardText()).
If you want ReplaceSel work only with selection you can use the folowing code:
Code:
var AkelPad=new ActiveXObject("AkelPad.document");

if (AkelPad.GetSelStart() != AkelPad.GetSelEnd())
  AkelPad.ReplaceSel("MyText");
Back to top
View user's profile Send private message Send e-mail
Surveyor



Joined: 08 Feb 2008
Posts: 147
Location: British Columbia, Canada

PostPosted: Tue Mar 31, 2009 4:19 pm    Post subject: Thanks - additional question Reply with quote

Instructor,

Thanks for the quick reply! You must have a computer tied to you!

Another issue (probably just an oversight, not an actual error):

Scripts-Methods.txt (included with Scripts.zip) says
Quote:
AkelPad.TextFind ...
Return Value
Number. Character position of the next match.

Source code indicates it returns NOERROR. This results in 0=good, -1=not found. Is that the intended return? Or should it actually return the text position?

It wouldn't be a problem if the text position was NOT returned; if MDI search is done, script can't tell what document text was found in anyway. User has to check (visually) in AkelPad.

Also, I can't seem to get the MDI search to work! I have tried passing the handle to the main AkelPad window (instead of edit window) - still returns -1. What am I doing wrong? (Note: using FR_ALLFILES by itself DOES return 0, but text is not selected and MDI document is not activated, therefore, user probably cannot tell where text was found).

Sorry to be a pest Twisted Evil with these "bugs"; I am including sample scripts (JS and VBS) with each function and these little things turn up as I test them. I want to make sure the documentation is accurate.
Back to top
View user's profile Send private message Send e-mail
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 6250

PostPosted: Tue Mar 31, 2009 5:40 pm    Post subject: Reply with quote

Surveyor
I corrected documentation - FR_ALLFILES available only inside AkelPad. See SearchAllMDI.js
Back to top
View user's profile Send private message Send e-mail
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 6250

PostPosted: Mon Apr 06, 2009 5:45 am    Post subject: Reply with quote

Changed: removed CreateMutex, OpenMutex, CloseMutex methods - implemented internally.

Added: double execution protection.
Added: dialog resizing.


Scripts plugin v4.0
Back to top
View user's profile Send private message Send e-mail
Infocatcher



Joined: 06 Aug 2007
Posts: 1767

PostPosted: Wed Apr 15, 2009 7:05 pm    Post subject: Reply with quote

В новой версии плагина LineBoard улучшен переход к строке с закладкой.
Так вот, нельзя ли сделать делать аналогичное в SearchReplace.js – чтобы найденное оказывалось посередине окна, а не где-то с краю.
Back to top
View user's profile Send private message Visit poster's website
VladSh



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

PostPosted: Thu Apr 16, 2009 3:33 pm    Post subject: Reply with quote

Похоже всё-таки баг.

При передаче параметров %f и %d в скрипты внутри получаем разные результаты: Exec возвращает полный путь (как и положено), а Call - путь до 1-го пробела, т.е. у меня это "C:\Program".


Last edited by VladSh on Thu Apr 16, 2009 9:31 pm; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 6250

PostPosted: Thu Apr 16, 2009 4:34 pm    Post subject: Reply with quote

VladSh
Code:
-"Test" Call("Scripts::Main", 1, "Test.js", `"%f"`, 0)
Back to top
View user's profile Send private message Send e-mail
VladSh



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

PostPosted: Thu Apr 16, 2009 7:43 pm    Post subject: Reply with quote

ПОЛУЧЕНИЕ АРГУМЕНТОВ В СКРИПТЕ (2 варианта):


1. При передаче параметра внутри символов ``
Code:
"ActionName" Call("Scripts::Main", 1, "ScriptName.js", `"paramValue"`, 0)
Проверку на валидность параметров нужно делать так:
Code:
function getArgValue()
{
   if (WScript.Arguments(0) != "")
      return WScript.Arguments(0);
   else
      return 'Your default value';
}


2. При передаче параметров без ``, т.е.:
Code:
"ActionName" Call("Scripts::Main", 1, "ScriptName.js", "paramValue", 0)
Проверку на валидность параметров нужно делать так (идею взял из кода Infocatcher'а):
Code:
function getArgValue()
{
   if (WScript.Arguments.Count() && WScript.Arguments(0) != "undefined")
      return WScript.Arguments(0);
   else
      return 'Your default value';
}


1-й вариант корректнее, т.к. если во 2-м варианте передавать параметр с пробелом, то в скрипте получаем только кусок параметра, находящийся перед пробелом!

Думаю, лучше внести это в документацию по плагину.

А вообще идеальным было бы, конечно, решение в виде метода в плагине, возвращающего массив параметров безо всяких этих боков.
Back to top
View user's profile Send private message Visit poster's website
VladSh



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

PostPosted: Thu Apr 16, 2009 9:31 pm    Post subject: По команде "Выполнить" Reply with quote

Instructor wrote:
Added: variable %u - URL address (work in "URL menu" only)

ContextMenu plugin v4.6

%u работает отлично! Смог в скрипте получить адрес сайта. Не подскажете, как перейти к сайту, т.е. открыть полученую ссылку в браузере?
Желательно как в конкретном браузере, так и в браузере "по умолчанию".
"По умолчанию" - можно было бы открыть как в командной строке (например Start -> Run). Существует ли какой-то аналог команды "Выполнить" с похожими параметрами?


Upd:
Instructor wrote:
Added: environment variables support. For example:
Code:
Exec(`%windir%\notepad.exe`)

ContextMenu plugin v4.5

Следующие строки в Start -> Run работает отлично:
Code:
hh ms-its:%windir%\Help\ntcmds.chm::/ntcmds_o.htm
hh mk:@MSITStore:%windir%\Help\ntcmds.chm::/ntcmds.htm
hh ms-its:%windir%\Help\ntcmds.chm::/dos_diffs.htm

Но с помощью WshShell.Exec() мне заставить работать эти строки так и не удалось.
Пробовал различные варианты:
Code:
"hh %windir%\Help\ntcmds.chm::/ntcmds_o.htm"
"hh `%windir%\Help\ntcmds.chm::/ntcmds_o.htm`"
"hh `%windir%\Help\ntcmds.chm`"
Слэш '\' после %windir% съедается Sad
Back to top
View user's profile Send private message Visit poster's website
Infocatcher



Joined: 06 Aug 2007
Posts: 1767

PostPosted: Fri Apr 17, 2009 6:09 pm    Post subject: Re: По команде "Выполнить" Reply with quote

VladSh wrote:
открыть полученую ссылку в браузере?
Желательно как в конкретном браузере, так и в браузере "по умолчанию".
Пример для браузера по умолчанию:
Code:
"&Содержание" Exec('rundll32.exe shell32,ShellExec_RunDLL "%a\AkelFiles\Docs\AkelHelp-Rus.htm"')
Back to top
View user's profile Send private message Visit poster's website
VladSh



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

PostPosted: Fri Apr 17, 2009 8:23 pm    Post subject: Re: По команде "Выполнить" Reply with quote

Infocatcher

Да, что-то я затупил... Работает так:
Code:
WshShell.Exec('rundll32.exe shell32,ShellExec_RunDLL "' + site + '"');

а так что-то всё равно не хочет (ошибка "Не удаётся найти указанный файл"):
Code:
WshShell.Exec('iexplore.exe "' + site + '"');
хотя если вставить в Start -> Run, то открывает; мистика какая-то...
Back to top
View user's profile Send private message Visit poster's website
Infocatcher



Joined: 06 Aug 2007
Posts: 1767

PostPosted: Fri Apr 17, 2009 8:57 pm    Post subject: Re: По команде "Выполнить" Reply with quote

VladSh wrote:
а так что-то всё равно не хочет (ошибка "Не удаётся найти указанный файл"):
Code:
WshShell.Exec('iexplore.exe "' + site + '"');
хотя если вставить в Start -> Run, то открывает; мистика какая-то...
Я думаю, дело в том, что rundll32.exe лежит в system32\, а ассоциация
iexplore.exe <-> c:\ ... \iexplore.exe
– где-то в реестре (?).
А iexplore.exe, например, из консоли (cmd.exe) тоже не видно.

Code:
var wss = new ActiveXObject("WScript.shell");
wss.Exec('"%programfiles%\\Internet Explorer\\iexplore.exe" http://akelpad.sf.net/');
Back to top
View user's profile Send private message Visit poster's website
VladSh



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

PostPosted: Fri Apr 17, 2009 9:06 pm    Post subject: Re: По команде "Выполнить" Reply with quote

Infocatcher
Щас был в туалете Mr. Green, и, как всегда, "случайно, а не нарочно" (с) С лёгким паром Laughing вспомнил как я когда-то похожую задачку у себя в проекте заводил с толкача:
Code:
WshShell.Exec('explorer.exe "' + site + '"');

- Можно, мы с Новосельцевым поставим лошадь в шкаф?
- А она там поместится?
- Впихнём!!! (с) Служебный роман
Laughing
Back to top
View user's profile Send private message Visit poster's website
Infocatcher



Joined: 06 Aug 2007
Posts: 1767

PostPosted: Thu Apr 23, 2009 5:18 pm    Post subject: Reply with quote

Почему-то иногда крашится при вызове скрипта без каких бы то ни было адекватных причин.
Есть подозрения на проблемы при выполнении кода вида
Code:
var AkelPad = new ActiveXObject("AkelPad.document");
var hWndEdit = AkelPad.GetEditWnd();
var oFunction = AkelPad.SystemFunction();

function toggleRedraw(hWnd, bRedraw) {
   AkelPad.SendMessage(hWnd, 11 /*WM_SETREDRAW*/, bRedraw, 0);
   if(!bRedraw)
      return;
   oFunction.AddParameter(hWnd);
   oFunction.AddParameter(0);
   oFunction.AddParameter(true);
   oFunction.Call("user32::InvalidateRect");
}

toggleRedraw(hWndEdit, false);
// Do something...
toggleRedraw(hWndEdit, true);

Однако тот же код на том же файле, запущенный при тех же условиях, может и не привести к падению. Но когда прямо сейчас упало несколько раз подряд, помогла заглушка вида
Code:
function toggleRedraw(hWnd, bRedraw) {
   return;
А вот по возвращении исходного кода – падений как не бывало. Shocked

Еще перед системным сообщением об упавшем AkelPad.exe видно, что подсветка синтаксиса какая-то не полная.
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 6250

PostPosted: Fri May 01, 2009 8:45 am    Post subject: Reply with quote

Added: optional parameter to MemAlloc, MemCopy, MemRead, MemFree to work with exe memory.


Scripts plugin v4.3
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins All times are GMT
Goto page Previous  1, 2, 3 ... 10, 11, 12 ... 69, 70, 71  Next
Page 11 of 71

 
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