AkelPad.ScriptHandle (+ActiveX)

Позволяет взаимодействовать с другими работающими скриптами.

ScriptHandle(vData, nOperation)

Параметры

vDataВходящие данные.
nOperation1   //SH_FIRSTSCRIPT  Получить первый скрипт в стеке.
//  vData: ноль.
//  Возвращаемое значение: дескриптор первого скрипта в стеке.
2   //SH_THISSCRIPT  Получить дескриптор текущего скрипта в стеке.
//  vData: ноль.
//  Возвращаемое значение: дескриптор текущего скрипта в стеке.
3   //SH_FINDSCRIPT  Найти дескриптор скрипта по его имени.
//  vData: имя скрипта.
//  Возвращаемое значение: дескриптор первого найденного работающего скрипта стеке.
10  //SH_GETEXECTYPE  Получить код внешнего вызова скрипта.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: код внешнего вызова скрипта.
11  //SH_GETTHREADHANDLE  Получить дескриптор потока скрипта.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: дескриптор потока скрипта.
12  //SH_GETTHREADID  Получить идентификатор потока скрипта.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: идентификатор потока скрипта.
13  //SH_GETMESSAGELOOP  Получить наличие цикла сообщений в потоке скрипта.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: true - присутствует, false - отсутствует.
14  //SH_GETLOCKMULTICOPY  Блокировка запуска нескольких копий скрипта.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: true - присутствует, false - отсутствует.
15  //SH_GETLOCKSCRIPTSQUEUE  Блокировка одновременной работы других скриптов во время работы данного скрипта.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: true - присутствует, false - отсутствует.
16  //SH_GETLOCKPROGRAMTHREAD  Блокировка потока программы, ожидающего завершения скрипта (при внешнем вызове скрипта с кодом 2).
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: true - присутствует, false - отсутствует.
17  //SH_GETSERVICEWINDOW  Получить дескриптор служебного окна потока скрипта. Автоматически создается при использовании методов WindowSubClass, ThreadHook и RegisterCallback.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: дескриптор служебного окна потока скрипта.
18  //SH_GETLOCKSENDMESSAGE  Блокировка потока скрипта вызовами AkelPad.SendMessage, AkelPad.Command.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: true - присутствует, false - отсутствует.
20  //SH_GETBASENAME  Получить имя скрипта без расширения.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: имя скрипта без расширения.
21  //SH_GETNAME  Получить имя скрипта.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: имя скрипта.
22  //SH_GETFILE  Получить файл скрипта.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: файл скрипта.
23  //SH_GETNCLUDE  Получить файл подсоединяемого скрипта.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: файл подсоединяемого скрипта.
24  //SH_GETARGUMENTS  Получить строку аргументов скрипта.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: строка аргументов скрипта.
31  //SH_NEXTSCRIPT   Получить дескриптор следующего скрипта в стеке независимо от имени.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: дескриптор следующего скрипта в стеке независимо от имени.
32  //SH_NEXTSAMESCRIPT  Получить дескриптор следующего скрипта в стеке с тем же именем.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: дескриптор следующего скрипта в стеке с тем же именем.
33  //SH_CLOSESCRIPT  Выйти из цикла сообщений потока скрипта.
//  vData: дескриптор скрипта. Если ноль, то используется дескриптор текущего скрипта.
//  Возвращаемое значение: ноль.

Возвращаемое значение


Зависит от операции.

Пример

(запрет на изменение шрифта посредством колесика мыши и клавиши Ctrl)

var hMainWnd = AkelPad.GetMainWnd();
var oSys = AkelPad.SystemFunction();
var hSubClass;
var hScript;

if ((hScript = AkelPad.ScriptHandle(WScript.ScriptName, 3 /*SH_FINDSCRIPT*/ )) && AkelPad.ScriptHandle(hScript, 13 /*SH_GETMESSAGELOOP*/ )) {
    //Script is running, second call close it.
    AkelPad.ScriptHandle(hScript, 33 /*SH_CLOSESCRIPT*/ );
} else if (hSubClass = AkelPad.WindowSubClass(2 /*WSC_EDITPROC*/ , EditCallback, 0x020A /*WM_MOUSEWHEEL*/ )) {
    //Allow other scripts running.
    AkelPad.ScriptNoMutex();

    //Message loop.
    AkelPad.WindowGetMessage();

    AkelPad.WindowUnsubClass(2 /*WSC_EDITPROC*/ );
}

function EditCallback(hWnd, uMsg, wParam, lParam) {
    if (uMsg == 0x020A /*WM_MOUSEWHEEL*/ ) {
        if ((wParam & 0xffff) == 0x8 /*MK_CONTROL*/ ) {
            AkelPad.WindowNoNextProc(hSubClass);
            return 0;
        }
    }
}