AkelPad.ScriptHandle (+ActiveX)
Позволяет взаимодействовать с другими работающими скриптами.
ScriptHandle(vData, nOperation)
Параметры
vData | Входящие данные. |
nOperation | 1 //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;
}
}
}