Scripts discussion (4)

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Re: Scripts discussion (4)

Post by AZJIO »

InputBox_function.js не работает на новой версии, даже пример InputBox.js не работает, крашит AkelPad. Может кто поправит?

Offline
Posts: 3247
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Re: Scripts discussion (4)

Post by VladSh »

Instructor
Результаты обратной трассировки по InputBox_function.js.

Offline
Posts: 3247
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Re: Scripts discussion (4)

Post by VladSh »

И ещё у меня при попытке вызова FindReplaceFiles.js вылетает сообщение об ошибке:
---------------------------
Scripts plugin
---------------------------
Script: C:\Portable\AkelPad\AkelFiles\Plugs\Scripts\FindReplaceFiles.js
Line: 663
Symbol: 5
Error: Недостаточно места в стеке
Code: 800A001C
Source: Ошибка выполнения JavaScript
---------------------------
Да Нет Отмена
---------------------------
При попытке его закрыть, оно не закрывается, а в цикле появляется ещё одно такое же сообщение, и так до бесконечности. Приходится снимать задачу.

Строка 663 это:

Code: Select all

nID = oSys.Call("User32::GetDlgCtrlID", oSys.Call("User32::GetFocus"));
ОС: Windows 11 Корпоративная, 24H2, 26100.4652, 1000.26100.128.0.

Offline
Site Admin
Posts: 6417
Joined: Thu Jul 06, 2006 7:20 am

Re: Scripts discussion (4)

Post by Instructor »

AZJIO wrote: Sun Aug 10, 2025 2:22 am InputBox_function.js не работает ...
См. Scripts v19.3

AkulaBig wrote: Wed Jul 02, 2025 1:28 pm В скрипте FindReplaceFiles.js под Вин 11 выдает ошибку...
VladSh wrote: Mon Aug 11, 2025 11:04 am И ещё у меня при попытке вызова FindReplaceFiles.js вылетает сообщение об ошибке...
Уведомил KDJ.

Как временное решение: 1. строку

Code: Select all

        nMaxFileSize = parseInt(GetWindowText(lParam), 10);
замените на

Code: Select all

        //+Win11 fix
        var sMaxFileSize = GetWindowText(lParam);

        if (sMaxFileSize == "")
        {
          nMaxFileSize = 0;
          return 0
        }
        nMaxFileSize = parseInt(sMaxFileSize, 10);
        //nMaxFileSize = parseInt(GetWindowText(lParam), 10);
        //-Win11 fix
2. блок

Code: Select all

    nID = oSys.Call("User32::GetDlgCtrlID", oSys.Call("User32::GetFocus"));
    if (nID == IDFILELV)
      nID = IDEDITB;
    else if ((nID != IDCURRENTB) && (nID != IDBROWSEB) && (nID != IDHELP1B) && (nID != IDHELP2B) && (nID != IDHELP3B) && (nID < IDSEARCHB))
      nID = IDSEARCHB;
    oSys.Call("User32::DefDlgProcW", hWnd, 1025 /*DM_SETDEFID*/, nID, 0);
замените на

Code: Select all

    //+Win11 fix
    //nID = oSys.Call("User32::GetDlgCtrlID", oSys.Call("User32::GetFocus"));
    //if (nID == IDFILELV)
    //  nID = IDEDITB;
    //else if ((nID != IDCURRENTB) && (nID != IDBROWSEB) && (nID != IDHELP1B) && (nID != IDHELP2B) && (nID != IDHELP3B) && (nID < IDSEARCHB))
    //  nID = IDSEARCHB;
    //oSys.Call("User32::DefDlgProcW", hWnd, 1025 /*DM_SETDEFID*/, nID, 0);
    var nDefID = LoWord(oSys.Call("User32::DefDlgProcW", hWnd, 1024 /*DM_GETDEFID*/, 0, 0));
    nID = oSys.Call("User32::GetDlgCtrlID", oSys.Call("User32::GetFocus"));
    if (nID == IDFILELV)
      nID = IDEDITB;
    else if ((nID != IDCURRENTB) && (nID != IDBROWSEB) && (nID != IDHELP1B) && (nID != IDHELP2B) && (nID != IDHELP3B) && (nID < IDSEARCHB))
      nID = IDSEARCHB;
    else
      nID = 0;
    if (nID && nDefID != nID)
      oSys.Call("User32::DefDlgProcW", hWnd, 1025 /*DM_SETDEFID*/, nID, 0);
    //-Win11 fix

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Re: Scripts discussion (4)

Post by AZJIO »

Instructor wrote: Thu Aug 21, 2025 8:02 am См. Scripts v19.3
Спасибо, теперь всё работает.

Offline
Posts: 3247
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Re: Scripts discussion (4)

Post by VladSh »

Instructor
У меня "временное решение" для FindReplaceFiles.js с новой версией Scripts-плагина не работает - та же ошибка "Недостаточно места в стеке" на строке 663.

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Re: Scripts discussion (4)

Post by AZJIO »

Это? У меня работает.
Image

Offline
Site Admin
Posts: 6417
Joined: Thu Jul 06, 2006 7:20 am

Re: Scripts discussion (4)

Post by Instructor »

VladSh wrote: Fri Aug 22, 2025 3:26 pmУ меня "временное решение" для FindReplaceFiles.js с новой версией Scripts-плагина не работает - та же ошибка "Недостаточно места в стеке" на строке 663.
Выложите/вышлите папку с AkelPad'ом.

Добавлено
Внёс дополнительные правки.

Offline
Posts: 3247
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Re: Scripts discussion (4)

Post by VladSh »

Instructor
Последние изменения работают. Спасибо!

P.S. Только что 11-я винда обновилась до сборки 26100.7171, с пакетом интерфейса компонентов 1000.26100.265.0, и на ней старый код всё ещё не работает. Проверил, т.к. надеялся, что м.б. исправили, но - нет...

Offline
Posts: 52
Joined: Sat Jul 05, 2008 11:30 am
Location: Odesa, Ukraine

Re: Scripts discussion (4)

Post by ewild »

ContextMenu-Eng.txt:

Code: Select all

...
    Link(number)
      Link(1)
        method opens hyperlink (work in "URL menu" only).
      Link(2)
        method copies hyperlink (work in "URL menu" only).
      Link(3)
        method selects hyperlink (work in "URL menu" only).
      Link(4)
        method cuts hyperlink (work in "URL menu" only).
      Link(5)
        method replaces hyperlink with the clipboard text (work in "URL menu" only).
      Link(6)
        method deletes hyperlink (work in "URL menu" only).
    Favourites(number)
      Favourites(1)
        method adds current file to favourites (with dialog).
      Favourites(2)
        method adds current file to favourites (without dialog).
      Favourites(3)
        method opens dialog to manage favourites.
      Favourites(4)
        method deletes current file from favourites.
...
Call("ContextMenu::Main", 2, OPERATION)
  Parameters:
    2. External call for favourite files list.
    OPERATION
      Operation number. See description of Favourites() method.

Question:
Is there a way to invoke the Link() method from the script?
Putting it in the script like this (similar to how this is done for the Favourites() method):
Call("ContextMenu::Main", NUMBER, OPERATION)
where:
NUMBER = ? for External call for the Link() method
OPERATION = ? [1..6] Operation number. See description of the Link() method.
Post Reply