***************************************************************** *** Scripts AkelPad plugin v9.9 *** ***************************************************************** 2011 Шенгальц Александр aka Instructor (Shengalts@mail.ru) *** Описание *** Scripts плагин основан на технологии Windows Scripting Host (WSH), таким образом, Вы можете использовать различные Windows Component Object Model (COM) объекты. Например, Вы можете осуществить поиск по регулярным выражениям, используя RegExp объект, работать с файлами, используя FileSystemObject объект, создавать ярлыки, работать с реестром Windows, используя WshShell объект, или работать с функциями сети, используя WshNetwork объект. Также Вы можете создавать и запускать скрипты, которые взаимодействуют с внешними приложениями, поддерживающими Automation (такими как Word и Excel). Код плагина основан на "COM in C" от Jeff Glatt. *** Включённые скрипты *** SearchReplace.js -поиск/замена с использованием регулярных выражений. SpellCheck.js -проверка орфографии, используя Microsoft Word. LinesFilter.js -фильтр строк. Calculator.js -текстовый калькулятор. EvalCmd.js -обработать выражение, переданное через командную строку. InsertDate.js -вставка даты и времени в указанном формате. InsertFile.js -вставка содержимого указанного файла. RenameFile.js -переименование редактируемого файла. Keyboard.js -исправляет раскладку клавиатуры или транслитерирует текст. ColumnCounter.js -увеличение чисел (счетчик) вертикального выделения. Test.js -тестовый скрипт на JScript. Test.vbs -тестовый скрипт на VBScript. *** Функции *** Scripts::Main Основной диалог. *** Внешний вызов *** Call("Scripts::Main", 1, "SCRIPT", "ARGUMENTS") Параметры: 1 Выполнить скрипт. "SCRIPT" Имя файла скрипта. Если "", то используется последний обработанный скрипт. "ARGUMENTS" Аргументы (по умолчанию ""). Примеры: Call("Scripts::Main", 1, "InsertDate.js") Call("Scripts::Main", 1, "InsertDate.js", `"dd MMMM yyyy"`) Call("Scripts::Main", 2, "SCRIPT", "ARGUMENTS") То же, что и предыдущий, но ожидать завершение скрипта. Call("Scripts::Main", 3, "SCRIPT") Параметры: 3 Открыть скрипт на редактирование. "SCRIPT" Имя файла скрипта. Если "", то используется последний обработанный скрипт. *** Список методов *** AkelPad.GetMainWnd AkelPad.GetAkelDir AkelPad.GetInstanceExe AkelPad.GetInstanceDll AkelPad.GetLangId AkelPad.IsOldWindows AkelPad.IsOldRichEdit AkelPad.IsOldComctl32 AkelPad.IsAkelEdit AkelPad.IsMDI AkelPad.GetEditWnd AkelPad.GetEditFile AkelPad.GetEditCodePage AkelPad.GetEditBOM AkelPad.GetEditNewLine AkelPad.GetEditModified AkelPad.GetEditReadOnly AkelPad.SendMessage AkelPad.MessageBox AkelPad.InputBox AkelPad.GetSelStart AkelPad.GetSelEnd AkelPad.SetSel AkelPad.GetSelText AkelPad.GetTextRange AkelPad.ReplaceSel AkelPad.TextFind AkelPad.TextReplace AkelPad.GetClipboardText AkelPad.SetClipboardText AkelPad.IsPluginRunning AkelPad.Call AkelPad.CallEx AkelPad.Exec AkelPad.Command AkelPad.Font AkelPad.Recode AkelPad.Include AkelPad.IsInclude AkelPad.OpenFile AkelPad.ReadFile AkelPad.SaveFile AkelPad.SystemFunction AkelPad.SystemFunction().AddParameter AkelPad.SystemFunction().Call AkelPad.SystemFunction().GetLastError AkelPad.SystemFunction().RegisterCallback AkelPad.SystemFunction().UnregisterCallback AkelPad.MemAlloc AkelPad.MemCopy AkelPad.MemRead AkelPad.MemStrPtr AkelPad.MemFree AkelPad.Debug AkelPad.VarType AkelPad.GetArgLine AkelPad.GetArgValue AkelPad.ScriptSettings AkelPad.ScriptSettings().Begin AkelPad.ScriptSettings().Read AkelPad.ScriptSettings().Write AkelPad.ScriptSettings().Delete AkelPad.ScriptSettings().End AkelPad.WindowRegisterClass AkelPad.WindowUnregisterClass AkelPad.WindowGetMessage AkelPad.WindowSubClass AkelPad.WindowUnsubClass AkelPad.ThreadHook AkelPad.ThreadUnhook AkelPad.ScriptNoMutex _TCHAR _TSTR _TSIZE _X64 *** Описание методов *** AkelPad.GetMainWnd __________________ Определить дескриптор главного окна. GetMainWnd(); Возвращаемое значение Число. Дескриптор главного окна. Пример: var hMainWnd=AkelPad.GetMainWnd(); AkelPad.GetAkelDir __________________ Определить директорию AkelPad'а или его подпапку. GetAkelDir([nSubDir]); Аргументы nSubDir 0 //ADTYPE_ROOT корневая папка AkelPad'а (по умолчанию). 1 //ADTYPE_AKELFILES "[AkelPad]\AkelFiles". 2 //ADTYPE_DOCS "[AkelPad]\AkelFiles\Docs". 3 //ADTYPE_LANGS "[AkelPad]\AkelFiles\Langs". 4 //ADTYPE_PLUGS "[AkelPad]\AkelFiles\Plugs". 5 //ADTYPE_SCRIPTS "[AkelPad]\AkelFiles\Plugs\Scripts". 6 //ADTYPE_INCLUDE "[AkelPad]\AkelFiles\Plugs\Scripts\Include". Возвращаемое значение Строка. Директория AkelPad'а или его подпапка. Пример: var pAkelDir=AkelPad.GetAkelDir(); AkelPad.GetInstanceExe ______________________ Определить дескриптор программы (EXE). GetInstanceExe(); Возвращаемое значение Число. Дескриптор программы (EXE). Пример: var hInstance=AkelPad.GetInstanceExe(); AkelPad.GetInstanceDll ______________________ Определить дескриптор библиотеки (DLL). GetInstanceDll(); Возвращаемое значение Число. Дескриптор библиотеки (DLL). Пример: var hInstance=AkelPad.GetInstanceDll(); AkelPad.GetLangId _________________ Определить идентификатор языка программы. GetLangId([nType]); Аргументы nType 0 //LANGID_FULL полный идентификатор языка. Данное значение является комбинацией первичного языкового идентификатора и вторичного (по умолчанию). 1 //LANGID_PRIMARY первичный языковой идентификатор. 2 //LANGID_SUB вторичный языковой идентификатор. Возвращаемое значение Номер. Идентификатор языка программы. Пример: var nLangID=AkelPad.GetLangId(1 /*LANGID_PRIMARY*/); if (nLangID == 0x19) //LANG_RUSSIAN WScript.Echo("Русский"); else WScript.Echo("Другой"); AkelPad.IsOldWindows ____________________ Проверить поддержку юникода в Windows. IsOldWindows(); Возвращаемое значение true юникод не поддерживается (Windows 95/98/Me). false юникод поддерживается (Windows NT/2000/XP). Пример: var bOldWindows=AkelPad.IsOldWindows(); AkelPad.IsOldRichEdit _____________________ Проверить riched20.dll версией ниже, чем 5.30 (v3.0) или нет. IsOldRichEdit(); Возвращаемое значение true riched20.dll версией ниже, чем 5.30 (v2.0). false riched20.dll версией не ниже, чем 5.30 (v3.0, v4.0). Пример: var bOldRichEdit=AkelPad.IsOldRichEdit(); AkelPad.IsOldComctl32 _____________________ Проверить comctl32.dll версией ниже, чем 4.71 или нет. IsOldComctl32(); Возвращаемое значение true comctl32.dll версией ниже, чем 4.71. false comctl32.dll версией не ниже, чем 4.71. Пример: var bOldComctl32=AkelPad.IsOldComctl32(); AkelPad.IsAkelEdit __________________ Проверить использование AkelEdit'а. IsAkelEdit(); Возвращаемое значение true используется контрол AkelEdit (AkelPad v4.x.x или выше). false используется контрол RichEdit (AkelPad v3.x.x). Пример: var bAkelEdit=AkelPad.IsAkelEdit(); AkelPad.IsMDI _____________ Проверить использование многооконного режима (MDI). IsMDI(); Возвращаемое значение 0 //WMD_SDI Одноконный режим (SDI). 1 //WMD_MDI Многооконный режим (MDI). 2 //WMD_PMDI Псевдо-многооконный режим (PMDI). Пример: var nMDI=AkelPad.IsMDI(); AkelPad.GetEditWnd __________________ Определить дескриптор активного окна редактирования. GetEditWnd(); Возвращаемое значение Число. Дескриптор активного окна редактирования. Пример: var hEditWnd=AkelPad.GetEditWnd(); AkelPad.GetEditFile ___________________ Определить имя файла. GetEditFile(hHandle); Аргументы hHandle Дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования. Возвращаемое значение Строка. Имя файла. Пример: var pEditFile=AkelPad.GetEditFile(0); AkelPad.GetEditCodePage _______________________ Определить кодировку файла. GetEditCodePage(hHandle); Аргументы hHandle Дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования. Возвращаемое значение Число. Кодировка. Пример: var nCodePage=AkelPad.GetEditCodePage(0); AkelPad.GetEditBOM __________________ Определить наличие сигнатуры BOM у файла. GetEditBOM(hHandle); Аргументы hHandle Дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования. Возвращаемое значение true файл имеет сигнатуру BOM. false файл не имеет сигнатуры BOM. Пример: var bBOM=AkelPad.GetEditBOM(0); AkelPad.GetEditNewLine ______________________ Определить формат новой строки файла. GetEditNewLine(hHandle); Аргументы hHandle Дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования. Возвращаемое значение 1 DOS/Windows (0Dh, 0Ah) 2 Unix (0Ah) 3 Mac (0Dh) Пример: var nNewLine=AkelPad.GetEditNewLine(0); AkelPad.GetEditModified _______________________ Определить статус изменения файла. GetEditModified(hHandle); Аргументы hHandle Дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования. Возвращаемое значение true содержание окна редактирования было изменено. false содержание окна редактирования не было изменено. Пример: var bModified=AkelPad.GetEditModified(0); AkelPad.GetEditReadOnly _______________________ Определить использование режима только чтение. GetEditReadOnly(hHandle); Аргументы hHandle Дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования. Возвращаемое значение true используется режим только чтение. false режим только чтение не используется. Пример: var bReadOnly=AkelPad.GetEditReadOnly(0); AkelPad.SendMessage ___________________ Послать сообщение. SendMessage(hHandle, nMessage, wParam, lParam); Аргументы hHandle Дескриптор окна, чья процедура получит сообщение. nMessage Сообщение, которое посылается. wParam Дополнительная информация. lParam Дополнительная информация. Возвращаемое значение Число. Зависит от посылаемого сообщения. Пример: var hMainWnd=AkelPad.GetMainWnd(); AkelPad.SendMessage(hMainWnd, 273 /*WM_COMMAND*/, 4101 /*IDM_FILE_NEW*/, 0); AkelPad.MessageBox __________________ Показать сообщение. MessageBox(hHandle, pText, pCaption, nType); Аргументы hHandle Дескриптор окна владельца. Если ноль, окно сообщения не имеет владельца. pText Текст сообщения. pCaption Заголовок окна. nType Тип сообщения. См. MSDN. Возвращаемое значение Число. Идентификатор нажатой кнопки. См. MSDN. Пример: var hMainWnd=AkelPad.GetMainWnd(); AkelPad.MessageBox(hMainWnd, "MyText", "MyCaption", 64 /*MB_ICONINFORMATION*/); AkelPad.InputBox ________________ Диалог ввода строки. InputBox(hHandle, pCaption, pLabel, pEdit); Аргументы hHandle Дескриптор окна владельца. pCaption Заголовок окна. pLabel Заголовок поля ввода. pEdit Начальный текст поля ввода. Возвращаемое значение Строка. Текст поля ввода. При отмене возвращается undefined. Пример: var hMainWnd=AkelPad.GetMainWnd(); var pText=AkelPad.InputBox(hMainWnd, "MyCaption", "MyLabel", "MyText"); AkelPad.GetSelStart ___________________ Определить начало выделения. GetSelStart(); Возвращаемое значение Число. Позиция начала выделения. Пример: var nSelStart=AkelPad.GetSelStart(); AkelPad.GetSelEnd _________________ Определить конец выделения. GetSelEnd(); Возвращаемое значение Число. Позиция конца выделения. Пример: var nSelEnd=AkelPad.GetSelEnd(); AkelPad.SetSel ______________ Установить выделение. SetSel(nSelStart, nSelEnd); Аргументы nSelStart Позиция начала выделения. nSelEnd Позиция конца выделения. Возвращаемое значение Ноль. Пример: AkelPad.SetSel(0, 10); AkelPad.GetSelText __________________ Получить выделенный текст. GetSelText([nNewLine]); Аргументы nNewLine (только для AkelPad 4.x.x) 1 //"\r" формат новой строки (по умолчанию). 2 //"\n" формат новой строки. 3 //"\r\n" формат новой строки. Возвращаемое значение Строка. Выделенный текст. Пример: var pSelText=AkelPad.GetSelText(); AkelPad.GetTextRange ____________________ Получить текст из заданного диапазона. GetTextRange(nRangeStart, nRangeEnd[, nNewLine]); Аргументы nRangeStart Позиция начала диапазона. nRangeEnd Позиция конца диапазона. nNewLine (только для AkelPad 4.x.x) 1 //"\r" формат новой строки (по умолчанию). 2 //"\n" формат новой строки. 3 //"\r\n" формат новой строки. Возвращаемое значение Строка. Текст из диапазона. Пример: var pTextRange=AkelPad.GetTextRange(0, 10); AkelPad.ReplaceSel __________________ Заменить выделение. ReplaceSel(pText[, bSelect]); Аргументы pText Текст, которым заменяется выделение. bSelect true выделить вставленный текст. false не выделять вставленный текст (по умолчанию). Возвращаемое значение Ноль. Пример: AkelPad.ReplaceSel("MyText"); AkelPad.TextFind ________________ Найти текст. TextFind(hHandle, pFindIt, nFlags); Аргументы hHandle Дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования. pFindIt Текст для поиска. nFlags 0x00000001 //FR_DOWN Найти вниз. 0x00000004 //FR_MATCHCASE Поиск чувствителен к регистру. 0x00100000 //FR_UP Найти вверх. 0x00200000 //FR_BEGINNING Поиск с начала (использование: FR_DOWN|FR_BEGINNING). 0x00400000 //FR_SELECTION Поиск в выделении (использование: FR_DOWN|FR_SELECTION). 0x00800000 //FR_ESCAPESEQ Поиск с esc-последовательностями. 0x01000000 //FR_ALLFILES Поиск во всех открытых вкладках (не реализовано). 0x08000000 //FR_CYCLESEARCH Поиск по кругу. Возвращаемое значение Число. Позиция найденного текста. –1, если ничего не найдено. Пример: var hEditWnd=AkelPad.GetEditWnd(); AkelPad.TextFind(hEditWnd, "МойТекстДляПоиска", 0x00200001 /*FR_DOWN|FR_BEGINNING*/); AkelPad.TextReplace ___________________ Найти и заменить текст. TextReplace(hHandle, pFindIt, pReplaceWith, nFlags, bAll); Аргументы hHandle Дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования. pFindIt Текст для поиска. pReplaceWith Текст для замены. nFlags 0x00000001 //FR_DOWN Найти вниз. 0x00000004 //FR_MATCHCASE Поиск чувствителен к регистру. 0x00100000 //FR_UP Найти вверх. 0x00200000 //FR_BEGINNING Поиск с начала (использование: FR_DOWN|FR_BEGINNING). 0x00400000 //FR_SELECTION Поиск в выделении (использование: FR_DOWN|FR_SELECTION). 0x00800000 //FR_ESCAPESEQ Поиск с esc-последовательностями. 0x01000000 //FR_ALLFILES Поиск во всех открытых вкладках (не реализовано). 0x08000000 //FR_CYCLESEARCH Поиск по кругу (работает, если bAll == false). bAll true заменить всё. false одна замена. Возвращаемое значение Число. Позиция найденного текста. –1, если ничего не найдено. Пример: var hEditWnd=AkelPad.GetEditWnd(); AkelPad.TextReplace(hEditWnd, "МойТекстДляПоиска", "МойТекстДляЗамены", 0x00200001 /*FR_DOWN|FR_BEGINNING*/, true); AkelPad.GetClipboardText ________________________ Получить текст из буфера обмена. GetClipboardText([bAnsi]); Аргументы bAnsi true Получить однобайтовый текст - ansi. false Получить двухбайтовый текст - unicode (по умолчанию). Возвращаемое значение Строка. Текст из буфера обмена. Пример: var pClipboardText=AkelPad.GetClipboardText(); AkelPad.SetClipboardText ________________________ Установить текст в буфер обмена. SetClipboardText(pText); Аргументы pText Текст для установки. Возвращаемое значение Ноль. Пример: AkelPad.SetClipboardText("MyText"); AkelPad.IsPluginRunning _______________________ Определяет работает плагин AkelPad'а или нет. IsPluginRunning(pFunction); Аргументы pFunction Функция для проверки. Возвращаемое значение true плагин работает. false плагин не работает. Пример: var bRunning=AkelPad.IsPluginRunning("HighLight::Main"); AkelPad.Call ____________ Вызвать плагин AkelPad'а. Call(pFunction[, ...]); Аргументы pFunction Функция для вызова. ... Параметры функции. Возвращаемое значение -1 //UD_FAILED Ошибка. 0 //UD_UNLOAD Плагин выгружен. 0x1 //UD_NONUNLOAD_ACTIVE Плагин в памяти и активен. 0x2 //UD_NONUNLOAD_NONACTIVE Плагин в памяти, но не активен. 0x4 //UD_NONUNLOAD_UNCHANGE Плагин в памяти. 0x8 //UD_HOTKEY_DODEFAULT Обработка горячей клавиши будет продолжена. Пример: var nResult=AkelPad.Call("Coder::HighLight", 2, "#000000", "#9BFF9B"); AkelPad.CallEx ______________ Вызвать плагин AkelPad'а с флагами. CallEx(nFlags, pFunction[, ...]); Аргументы nFlags 0x02 //DLLCF_GETSUPPORT Получить флаги PDS_* без выполнения функции. См. AkelDLL.h. 0x04 //DLLCF_SWITCHAUTOLOAD Если функция работает после вызова, то включается автозагрузка функции, если нет, то отключается автозагрузка функции. 0x08 //DLLCF_SAVENOW Используется совместно с DLLCF_SWITCHAUTOLOAD. Вызывает AKD_DLLSAVE с DLLSF_NOW после изменения флага автозагрузки. 0x10 //DLLCF_SAVEONEXIT Используется совместно с DLLCF_SWITCHAUTOLOAD. Вызывает AKD_DLLSAVE с DLLSF_ONEXIT после изменения флага автозагрузки. pFunction Функция для вызова. ... Параметры функции. Возвращаемое значение -1 //UD_FAILED Ошибка. 0 //UD_UNLOAD Плагин выгружен. 0x1 //UD_NONUNLOAD_ACTIVE Плагин в памяти и активен. 0x2 //UD_NONUNLOAD_NONACTIVE Плагин в памяти, но не активен. 0x4 //UD_NONUNLOAD_UNCHANGE Плагин в памяти. 0x8 //UD_HOTKEY_DODEFAULT Обработка горячей клавиши будет продолжена. Пример: var nResult=AkelPad.CallEx(0x14 /*DLLCF_SWITCHAUTOLOAD|DLLCF_SAVEONEXIT*/, "Coder::HighLight"); AkelPad.Exec ____________ Запустить программу. Exec(pCommandLine[, pWorkDirectory][, nWait]); Аргументы pCommandLine Командная строка. pWorkDirectory Рабочая директория. По умолчанию "". nWait 0 не ожидать завешения программы, автоматически присвоив возвращаемое значение нулю (по умолчанию). 1 ожидать завешения программы и вернуть код выхода указанный программой. 2 ожидать до тех пор, пока процесс не начнет ожидать ввода от пользователя, и автоматически присвоить возвращаемое значение нулю. Возвращаемое значение Число. Код выхода. Пример: AkelPad.Exec("notepad.exe"); AkelPad.Command _______________ Вызвать внутреннюю команду AkelPad'а. Command(nCmd); Аргументы nCmd Номер внутренней команды. Возвращаемое значение Число. Зависит от вызываемой команды. Пример: AkelPad.Command(4101 /*IDM_FILE_NEW*/); AkelPad.Font ____________ Установить шрифт. Font(pFont, nStyle, nSize); Аргументы pFont Имя шрифта, например, "Courier". Не изменяется, если "". nStyle 0 игнорировать. 1 обычный шрифт. 2 жирный шрифт. 3 курсивный шрифт. 4 жирный курсивный шрифт. nSize Размер шрифта. Не изменяется, если 0. Возвращаемое значение Ноль. Пример: AkelPad.Font("Courier", 4, 10) AkelPad.Recode ______________ Перекодировать выделение. Recode(nCodePageFrom, nCodePageTo); Аргументы nCodePageFrom Перекодировать из кодировки. nCodePageTo Перекодировать в кодировку. Возвращаемое значение Ноль. Пример: AkelPad.Recode(1251, 866); AkelPad.Include _______________ Добавить код из файла. Include(pFileName); Аргументы pFileName Имя файла, который находится в директории "[AkelPad]\AkelFiles\Plugs\Scripts\Include". Замечания Метод Include аналогичен коду eval(AkelPad.ReadFile("...")), но позволяет выявлять место ошибки в добавляемом файле, если она присутствует. Возвращаемое значение true успешно. false не успешно. Пример: var pParent; AkelPad.Include("CommonFunctions.js"); pParent=GetParent("C:\\Program Files\\1.txt"); WScript.Echo(pParent); AkelPad.IsInclude _________________ Определить запущен ли скрипт с помощью метода AkelPad.Include(). IsInclude(); Возвращаемое значение Строка. Имя добавляемого файла, если скрипт запущен с помощью метода AkelPad.Include() или "" в противном случае. Пример: WScript.Echo("" + AkelPad.IsInclude()); AkelPad.OpenFile ________________ Открыть файл. OpenFile(pFile[, nFlags][, nCodePage][, bBOM]); Аргументы pFile Файл для открытия. nFlags 0x1 //OD_ADT_BINARY_ERROR Проверить является ли файл бинарным. 0x2 //OD_ADT_REG_CODEPAGE Если кодировка файла была сохранена в реестре, то она будет использована // с флагом OD_ADT_DETECT_BOM, если нет, то следующие флаги будут использованы // OD_ADT_DETECT_CODEPAGE|OD_ADT_DETECT_BOM. 0x4 //OD_ADT_DETECT_CODEPAGE Определить кодировку. 0x8 //OD_ADT_DETECT_BOM Определить наличие сигнатуры BOM. //По умолчанию 0xD (OD_ADT_BINARY_ERROR|OD_ADT_DETECT_CODEPAGE|OD_ADT_DETECT_BOM). nCodePage Кодировка файла, игнорируется если (nFlags & OD_ADT_DETECT_CODEPAGE) bBOM Сигнатура BOM, игнорируется если (nFlags & OD_ADT_DETECT_BOM) Возвращаемое значение 0 //EOD_SUCCESS Успешно. -1 //EOD_ADT_OPEN Определение кодировки, невозможно открыть файл. -2 //EOD_ADT_ALLOC Определение кодировки, невозможно выделить память. -3 //EOD_ADT_READ Определение кодировки, ошибка чтения файла. -11 //EOD_OPEN Невозможно открыть файл. -13 //EOD_WINDOW_EXIST Файл уже открыт. -14 //EOD_CODEPAGE_ERROR Кодировка не реализована. -15 //EOD_STOP Остановлено из AKDN_OPENDOCUMENT_START. -16 //EOD_STREAMIN Ошибка в EM_STREAMIN. -17 //EOD_DOCUMENTS_LIMIT Достигнут лимит документов в режиме MDI. -20 //EOD_MSGNO Файл пропущен. -21 //EOD_MSGCANCEL Пользователь нажал отмену. Пример: var bResult=AkelPad.OpenFile("C:\\MyFile.txt"); AkelPad.ReadFile ________________ Получить содержимое файла. ReadFile(pFile[, nFlags][, nCodePage][, bBOM]); Аргументы pFile File to read. nFlags 0x1 //OD_ADT_BINARY_ERROR Проверить является ли файл бинарным. 0x2 //OD_ADT_REG_CODEPAGE Если кодировка файла была сохранена в реестре, то она будет использована // с флагом OD_ADT_DETECT_BOM, если нет, то следующие флаги будут использованы // OD_ADT_DETECT_CODEPAGE|OD_ADT_DETECT_BOM. 0x4 //OD_ADT_DETECT_CODEPAGE Определить кодировку. 0x8 //OD_ADT_DETECT_BOM Определить наличие сигнатуры BOM. //По умолчанию 0xD (OD_ADT_BINARY_ERROR|OD_ADT_DETECT_CODEPAGE|OD_ADT_DETECT_BOM). nCodePage Кодировка файла, игнорируется если (nFlags & OD_ADT_DETECT_CODEPAGE). bBOM Сигнатура BOM, игнорируется если (nFlags & OD_ADT_DETECT_BOM). Возвращаемое значение Строка. Содержимое файла. Пример: var pText=AkelPad.ReadFile("C:\\MyFile.txt"); AkelPad.SaveFile ________________ Сохранить документ. SaveFile(hHandle, pFile[, nCodePage][, bBOM][, nFlags]); Аргументы hHandle Дескриптор окна редактирования. Если ноль, то используется дескриптор активного окна редактирования. pFile Имя файла для сохранения. nCodePage Кодировка сохранения. Если -1 либо не указана, будет использована текущая кодировка. bBOM Сигнатура BOM файла. 1 - присутствует, 0 - отсутствует, -1 либо не указана - используется текущий BOM. nFlags 0x1 //SD_UPDATE Обновить информацию о файле в программе. 0x2 //SD_SELECTION Сохранить только выделение. //По умолчанию 0x1 (SD_UPDATE). Возвращаемое значение 0 //ESD_SUCCESS Успешно. -1 //ESD_OPEN Невозможно открыть файл. -2 //ESD_WRITE Невозможно записать файл. -3 //ESD_READONLY Файл имеет атрибут только-чтение. -4 //ESD_CODEPAGE_ERROR Кодировки не реализована. -5 //ESD_STOP Остановлено из AKDN_SAVEDOCUMENT_START. -6 //ESD_STREAMOUT Ошибка в EM_STREAMOUT. Пример: var hEditWnd=AkelPad.GetEditWnd(); var nResult=AkelPad.SaveFile(hEditWnd, "C:\\MyFile.txt"); AkelPad.SystemFunction ______________________ Создать объект системной функции. SystemFunction(); Возвращаемое значение Объект. Объект системной функции. Пример: var oSys=AkelPad.SystemFunction(); AkelPad.SystemFunction().AddParameter _____________________________________ Добавить параметр в функцию. AddParameter(vParameter); Аргументы vParameter Параметр. Возвращаемое значение Ноль. Пример: См. AkelPad.SystemFunction().Call пример со старым синтаксисом. AkelPad.SystemFunction().Call _____________________________ Вызвать системную функцию. Call(pDllFunction[, ...]); Аргументы pDllFunction Имя функции в формате "Библиотека::Функция". ... Параметры функции, должны быть числом, указателем либо строкой. Строковой параметр: в Windows 95/98/Me - однобайтовая строка, в Windows NT/2000/XP - двухбайтовая строка. Возвращаемое значение Число. Результат вызова. Пример (новый синтаксис): var hMainWnd=AkelPad.GetMainWnd(); var oSys=AkelPad.SystemFunction(); oSys.Call("user32::ShowWindow", hMainWnd, 6 /*SW_MINIMIZE*/); Пример (старый синтаксис): var hMainWnd=AkelPad.GetMainWnd(); var oSys=AkelPad.SystemFunction(); oSys.AddParameter(hMainWnd); oSys.AddParameter(6 /*SW_MINIMIZE*/); oSys.Call("user32::ShowWindow"); AkelPad.SystemFunction().GetLastError _____________________________________ Определить последнюю ошибку вызванной системной функции. GetLastError(); Возвращаемое значение Число. Последняя ошибка вызванной системной функции. Пример: var hMainWnd=AkelPad.GetMainWnd(); var oSys=AkelPad.SystemFunction(); var nError; oSys.Call("user32::ShowWindow", hMainWnd, 6 /*SW_MINIMIZE*/); nError=oSys.GetLastError(); AkelPad.SystemFunction().RegisterCallback _________________________________________ Зарегистрировать функцию обратного вызова. RegisterCallback(pFunction); Аргументы pFunction Имя функции строкой. Замечания В случае регистрации нескольких функций, необходимо помещать RegisterCallback непосредственно перед Call. Возвращаемое значение Объект. Указатель на функцию. Пример: var oSys=AkelPad.SystemFunction(); var lpEnumWindowsCallback; var nStopAfter=3; if (lpEnumWindowsCallback=oSys.RegisterCallback("EnumWindowsProc")) { oSys.Call("user32::EnumWindows", lpEnumWindowsCallback, 0); oSys.UnregisterCallback(lpEnumWindowsCallback); } function EnumWindowsProc(hWnd, lParam) { //Convert hWnd to hex if (hWnd < 0) hWnd=(0xFFFFFFFF + 1) + hWnd; hWnd="0x" + hWnd.toString(16).toUpperCase(); //Show parameters WScript.Echo("hWnd=" + hWnd + "; lParam=" + lParam); if (--nStopAfter <= 0) return false; else return true; } AkelPad.SystemFunction().UnregisterCallback ___________________________________________ Удалить регистрацию функции обратного вызова. В настоящее время x64 не поддерживается. UnregisterCallback(oFunction); Аргументы oFunction Указатель на функцию. Возвращаемое значение Ноль. Пример: См. пример RegisterCallback. AkelPad.MemAlloc ________________ Выделить память. MemAlloc(nSize); Аргументы nSize Размер в байтах. Возвращаемое значение Число. Указатель на выделенную память. Пример: var hMainWnd=AkelPad.GetMainWnd(); var oSys=AkelPad.SystemFunction(); var pMessage="MyMessage"; var pCaption="MyCaption"; var lpMessageBuffer; var lpCaptionBuffer; if (lpMessageBuffer=AkelPad.MemAlloc(256)) { AkelPad.MemCopy(lpMessageBuffer, pMessage.substr(0, 255), 0 /*DT_ANSI*/); if (lpCaptionBuffer=AkelPad.MemAlloc(256)) { AkelPad.MemCopy(lpCaptionBuffer, pCaption.substr(0, 255), 0 /*DT_ANSI*/); oSys.Call("user32::MessageBoxA", hMainWnd, lpMessageBuffer, lpCaptionBuffer, 64 /*MB_ICONINFORMATION*/); AkelPad.MemFree(lpCaptionBuffer); } AkelPad.MemFree(lpMessageBuffer); } AkelPad.MemCopy _______________ Копировать память. MemCopy(lpPointer, vData, nType); Аргументы lpPointer Указатель на память. vData Данные для копирования. nType Тип параметра vData: 0 //DT_ANSI Копируется однобайтовая строка в память (Ansi). 1 //DT_UNICODE Копируется двухбайтовая строка в память (Unicode). 2 //DT_QWORD Копируется восьмибайтовое число в память на x64 (QWORD) или четырехбайтовое число на x86 (DWORD). 3 //DT_DWORD Копируется четырехбайтовое число в память (DWORD). 4 //DT_WORD Копируется двухбайтовое число в память (WORD). 5 //DT_BYTE Копируется однобайтовое число в память (BYTE). Возвращаемое значение Число. Количество скопированных байтов. Пример: См. пример MemAlloc. AkelPad.MemRead _______________ Прочитать память. MemRead(lpPointer, nType); Аргументы lpPointer Указатель на память. nType 0 //DT_ANSI Прочитать однобайтовую строку из памяти (Ansi). 1 //DT_UNICODE Прочитать двухбайтовую строку из памяти (Unicode). 2 //DT_QWORD Прочитать восьмибайтовое число из памяти на x64 (QWORD) или четырехбайтовое число на x86 (DWORD). 3 //DT_DWORD Прочитать четырехбайтовое число из памяти (DWORD). 4 //DT_WORD Прочитать двухбайтовое число из памяти (WORD). 5 //DT_BYTE Прочитать однобайтовое число из памяти (BYTE). Возвращаемое значение Строка, либо число. Пример: var oSys=AkelPad.SystemFunction(); var lpDirBuffer; var pWinDir; if (lpDirBuffer=AkelPad.MemAlloc(256)) { oSys.Call("kernel32::GetWindowsDirectoryA", lpDirBuffer, 256); pWinDir=AkelPad.MemRead(lpDirBuffer, 0 /*DT_ANSI*/); AkelPad.MemFree(lpDirBuffer); } AkelPad.MemStrPtr _________________ Получить указатель на двухбайтовую строку в скрипте. MemStrPtr(pString); Аргументы pString Строка константой или объектом. Возвращаемое значение Число. Указатель на двухбайтовую строку. Пример: var hMainWnd=AkelPad.GetMainWnd(); AkelPad.SendMessage(hMainWnd, 1206 /*AKD_GOTOW*/, 0x1 /*GT_LINE*/, AkelPad.MemStrPtr("10:3")); AkelPad.MemFree _______________ Освободить память. MemFree(lpPointer); Аргументы lpPointer Указатель на память. Возвращаемое значение Ноль. Пример: См. пример MemAlloc. AkelPad.Debug _____________ Отладить использование памяти. Debug([dwType]); Аргументы dwType 0x1 //DBG_MEMREAD Отладить чтение памяти. 0x2 //DBG_MEMWRITE Отладить запись памяти. 0x4 //DBG_MEMFREE Отладить освобождение памяти. 0x8 //DBG_MEMLEAK Отладить утечку памяти. //По умолчанию 0xf (DBG_MEMREAD|DBG_MEMWRITE|DBG_MEMFREE|DBG_MEMLEAK). Возвращаемое значение Предыдущее значение dwType. Пример: var lpBuffer; AkelPad.Debug(); if (lpBuffer=AkelPad.MemAlloc(2)) { AkelPad.MemCopy(lpBuffer, 123, 3 /*DT_DWORD*/); AkelPad.MemFree(lpBuffer); } AkelPad.VarType _______________ Получить тип переменной. VarType(vData); Аргументы vData Переменная. Возвращаемое значение Число. Тип (VARTYPE) переменной (VARIANT). 0 //VT_EMPTY 1 //VT_NULL 2 //VT_I2 3 //VT_I4 4 //VT_R4 5 //VT_R8 6 //VT_CY 7 //VT_DATE 8 //VT_BSTR 9 //VT_DISPATCH 10 //VT_ERROR 11 //VT_BOOL 12 //VT_VARIANT 13 //VT_UNKNOWN 14 //VT_DECIMAL 16 //VT_I1 17 //VT_UI1 18 //VT_UI2 19 //VT_UI4 20 //VT_I8 21 //VT_UI8 22 //VT_INT 23 //VT_UINT 24 //VT_VOID 25 //VT_HRESULT 26 //VT_PTR 27 //VT_SAFEARRAY 28 //VT_CARRAY 29 //VT_USERDEFINED 30 //VT_LPSTR 31 //VT_LPWSTR 36 //VT_RECORD 37 //VT_INT_PTR 38 //VT_UINT_PTR 64 //VT_FILETIME 65 //VT_BLOB 66 //VT_STREAM 67 //VT_STORAGE 68 //VT_STREAMED_OBJECT 69 //VT_STORED_OBJECT 70 //VT_BLOB_OBJECT 71 //VT_CF 72 //VT_CLSID 73 //VT_VERSIONED_STREAM 0x0fff //VT_BSTR_BLOB 0x1000 //VT_VECTOR 0x2000 //VT_ARRAY 0x4000 //VT_BYREF 0x8000 //VT_RESERVED 0xffff //VT_ILLEGAL 0x0fff //VT_ILLEGALMASKED 0x0fff //VT_TYPEMASK Пример: var pString="123"; WScript.Echo("" + AkelPad.VarType(pString)); AkelPad.GetArgLine __________________ Получить строку аргументов. GetArgLine([bNoEncloseQuotes]); Аргументы bNoEncloseQuotes true Исключить обрамляющие кавычки (по умолчанию). false Оставить обрамляющие кавычки. Возвращаемое значение Строка. Строка аргументов. Пример: var pArgLine; if (pArgLine=AkelPad.GetArgLine(0)) WScript.Echo(pArgLine); AkelPad.GetArgValue ___________________ Получить значение аргумента по имени. GetArgValue(pArgName, vDefault); Аргументы pArgName Имя аргумента. vDefault Значение по умолчанию. Назначается в случае, если указанное имя аргумента не найдено. Возвращаемое значение Значение аргумента. Тип наследуется от значения по умолчанию. Пример: //Скрипт был вызван следующим образом: //Call("Scripts::Main", 1, "MyScript.js", `-ArgName1=0.01 -ArgName2="Value2" /ArgName3=0x10`) //Получим значения 0.01, Value2, 0x10 по именам ArgName1, ArgName2, ArgName3. var nArg1=AkelPad.GetArgValue("ArgName1", 0); var pArg2=AkelPad.GetArgValue("ArgName2", ""); var nArg3=AkelPad.GetArgValue("ArgName3", 0); WScript.Echo("VarType=" + AkelPad.VarType(nArg1) + "; ArgValue=" + nArg1 + "\r" + "VarType=" + AkelPad.VarType(pArg2) + "; ArgValue=" + pArg2 + "\r" + "VarType=" + AkelPad.VarType(nArg3) + "; ArgValue=" + nArg3 + "\r"); AkelPad.ScriptSettings ______________________ Создать объект настроек скрипта. ScriptSettings(); Возвращаемое значение Объект. Объект настроек скрипта. Пример: var oSet=AkelPad.ScriptSettings(); AkelPad.ScriptSettings().Begin ______________________________ Открыть настройки. Begin(pScriptName, nFlags); Аргументы pScriptName Имя скрипта без расширения. nFlags 0x1 //POB_READ Начать операции чтения. 0x2 //POB_SAVE Начать операции записи. 0x4 //POB_CLEAR Начать операции записи с очисткой (POB_SAVE|POB_CLEAR). Возвращаемое значение Число. Дескриптор настроек. Пример: См. примеры Read, Write и Delete. AkelPad.ScriptSettings().Read _____________________________ Прочитать настройку. Read(pOptionName, nType[, vDefault]); Аргументы pOptionName Имя настройки. nType 1 //PO_DWORD Прочитать четырехбайтовое число (DWORD). 2 //PO_BINARY Прочитать бинарные данные. 3 //PO_STRING Прочитать строку. vDefault Данные по умолчанию. Возвращаемое значение Строка, либо число. Пример: var oSet=AkelPad.ScriptSettings(); if (oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/)) { pString=oSet.Read("String", 3 /*PO_STRING*/); bMultiline=oSet.Read("Multiline", 1 /*PO_DWORD*/); oSet.End(); } AkelPad.ScriptSettings().Write ______________________________ Записать настройку. Write(pOptionName, nType, vData[, nDataSize]); Аргументы pOptionName Имя настройки. nType 1 //PO_DWORD Записать четырехбайтовое число (DWORD). 2 //PO_BINARY Записать бинарные данные. 3 //PO_STRING Записать строку. vData Данные для записи. nDataSize Размер данных для записи в байтах. Может не указываться при PO_DWORD или PO_STRING (по умолчанию -1). Возвращаемое значение Число. Размер записанных данных в байтах. Пример: var oSet=AkelPad.ScriptSettings(); if (oSet.Begin(WScript.ScriptBaseName, 0x2 /*POB_SAVE*/)) { oSet.Write("String", 3 /*PO_STRING*/, "Str1"); oSet.Write("Sensitive", 1 /*PO_DWORD*/, true); oSet.End(); } AkelPad.ScriptSettings().Delete _______________________________ Удалить настройку. Delete(pOptionName); Аргументы pOptionName Имя настройки. Возвращаемое значение true успешно. false не успешно. Пример: var oSet=AkelPad.ScriptSettings(); if (oSet.Begin(WScript.ScriptBaseName, 0x2 /*POB_SAVE*/)) { oSet.Delete("String"); oSet.Delete("Sensitive"); oSet.End(); } AkelPad.ScriptSettings().End ____________________________ Закрыть настройки. End(); Возвращаемое значение true успешно. false не успешно. Пример: См. примеры Read, Write и Delete. AkelPad.WindowRegisterClass ___________________________ Зарегистрировать класс окна. WindowRegisterClass(pClassName); Аргументы pClassName Имя класса для регистрации. Возвращаемое значение Число. Атом класса. Пример (JScript): var hMainWnd=AkelPad.GetMainWnd(); var oSys=AkelPad.SystemFunction(); var hInstanceDLL=AkelPad.GetInstanceDll(); var hWndDialog; if (hMainWnd) { if (AkelPad.WindowRegisterClass("NewClass")) { //Create dialog hWndDialog=oSys.Call("user32::CreateWindowEx" + _TCHAR, 0, //dwExStyle "NewClass", //lpClassName 0, //lpWindowName 0x90CA0000, //WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX 0, //x 0, //y 351, //nWidth 179, //nHeight hMainWnd, //hWndParent 0, //ID hInstanceDLL, //hInstance DialogCallback); //Script function callback. To use it class must be registered by WindowRegisterClass. if (hWndDialog) { //Disable main window, to make dialog modal oSys.Call("user32::EnableWindow", hMainWnd, false); //Message loop AkelPad.WindowGetMessage(); } AkelPad.WindowUnregisterClass("NewClass"); } } function DialogCallback(hWnd, uMsg, wParam, lParam) { if (uMsg == 1 /*WM_CREATE*/) { } else if (uMsg == 256 /*WM_KEYDOWN*/) { if (wParam == 27 /*VK_ESCAPE*/) { //Escape key pushes Cancel button oSys.Call("user32::PostMessage" + _TCHAR, hWndDialog, 273 /*WM_COMMAND*/, 2 /*IDCANCEL*/, 0); } } else if (uMsg == 273 /*WM_COMMAND*/) { if ((wParam & 0xffff) == 2 /*IDCANCEL*/) { oSys.Call("user32::PostMessage" + _TCHAR, hWndDialog, 16 /*WM_CLOSE*/, 0, 0); } } else if (uMsg == 16 /*WM_CLOSE*/) { //Enable main window oSys.Call("user32::EnableWindow", hMainWnd, true); //Destroy dialog oSys.Call("user32::DestroyWindow", hWnd); } else if (uMsg == 2 /*WM_DESTROY*/) { //Exit message loop oSys.Call("user32::PostQuitMessage", 0); } return 0; } Пример (VBScript): 'Variables hMainWnd=AkelPad.GetMainWnd() hInstanceDLL=AkelPad.GetInstanceDll() set oSys=AkelPad.SystemFunction() set lpCallbackPtr=GetRef("DialogCallback") hWndDialog=0 'VBScript deny names start with (_) underscope if AkelPad.IsOldWindows() then TCHAR="A" TSIZE=1 TSTR=0 else TCHAR="W" TSIZE=2 TSTR=1 end if 'Constants Const WM_CREATE=1 Const WM_KEYDOWN=256 Const WM_COMMAND=273 Const WM_CLOSE=16 Const WM_DESTROY=2 Const VK_ESCAPE=27 Const IDCANCEL=2 if hMainWnd then if AkelPad.WindowRegisterClass("NewClass") then 'Create dialog WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX hWndDialog=oSys.Call("user32::CreateWindowEx" & TCHAR, 0, "NewClass", 0, &H90CA0000, 0, 0, 351, 179, hMainWnd, 0, hInstanceDLL, lpCallbackPtr) if hWndDialog then 'Disable main window, to make dialog modal oSys.Call "user32::EnableWindow", hMainWnd, false 'Message loop AkelPad.WindowGetMessage() end if AkelPad.WindowUnregisterClass "NewClass" end if end if Function DialogCallback(hWnd, uMsg, wParam, lParam) if uMsg = WM_CREATE then elseif uMsg = WM_KEYDOWN then if wParam = VK_ESCAPE then 'Escape key pushes Cancel button oSys.Call "user32::PostMessage" & TCHAR, hWndDialog, WM_COMMAND, IDCANCEL, 0 end if elseif uMsg = WM_COMMAND then if (wParam And &Hffff) = IDCANCEL then oSys.Call "user32::PostMessage" & TCHAR, hWndDialog, WM_CLOSE, 0, 0 end if elseif uMsg = WM_CLOSE then 'Enable main window oSys.Call "user32::EnableWindow", hMainWnd, true 'Destroy dialog oSys.Call "user32::DestroyWindow", hWnd elseif uMsg = WM_DESTROY then 'Exit message loop oSys.Call "user32::PostQuitMessage", 0 end if DialogCallback=0 End Function AkelPad.WindowUnregisterClass _____________________________ Отменить регистрацию класса окна. WindowUnregisterClass(pClassName); Аргументы pClassName Имя класса для разрегистрации. Возвращаемое значение true успешно. false не успешно. Пример: См. пример WindowRegisterClass. AkelPad.WindowGetMessage ________________________ Обработать сообщения потока (цикл сообщений). WindowGetMessage(); Возвращаемое значение Ноль. Пример: См. пример WindowRegisterClass. AkelPad.WindowSubClass ______________________ Установить перехватчик сообщений окна. WindowSubClass(hHandle, lpFunction); Аргументы hHandle Дескриптор окна. lpFunction Функция с 4 параметрами, куда будут приходить сообщения. Возвращаемое значение Число. Адрес предыдущей процедуры. Пример: var hWndEdit=AkelPad.GetEditWnd(); var oSys=AkelPad.SystemFunction(); if (AkelPad.WindowSubClass(hWndEdit, EditCallback)) { //Message loop AkelPad.WindowGetMessage(); AkelPad.WindowUnsubClass(hWndEdit); } function EditCallback(hWnd, uMsg, wParam, lParam) { if (uMsg == 0x102 /*WM_CHAR*/) { AkelPad.MessageBox(0, "Key \"" + String.fromCharCode(wParam) + "\" is pressed.", "", 0); //Exit message loop oSys.Call("user32::PostQuitMessage", 0); } } AkelPad.WindowUnsubClass ________________________ Удалить перехватчик сообщений окна. WindowUnsubClass(hHandle); Аргументы hHandle Дескриптор окна. Возвращаемое значение Ноль. Пример: См. пример WindowSubClass. AkelPad.ThreadHook __________________ Установить хук для потока. ThreadHook(nId, lpFunction, nThreadId); Аргументы nId См. первый параметр SetWindowsHookEx в MSDN. lpFunction Функция с 3 параметрами, куда будут приходить вызовы. nThreadId Идентификатор потока. Если ноль, то хук будет установлен для всех потоков всех процессов. Возвращаемое значение Число. Дескриптор хука. Замечания Максимальное число работающих хуков не должно превышать 4-х. Пример: var hMainWnd=AkelPad.GetMainWnd(); var oSys=AkelPad.SystemFunction(); var dwMainThreadID=oSys.Call("user32::GetWindowThreadProcessId", hMainWnd, 0); var hHook; if (hHook=AkelPad.ThreadHook(3 /*WH_GETMESSAGE*/, HookCallback, dwMainThreadID)) { //Message loop AkelPad.WindowGetMessage(); AkelPad.ThreadUnhook(hHook); } function HookCallback(nCode, wParam, lParam) { var uMsg=AkelPad.MemRead(lParam + (_X64?8:4) /*offsetof(MSG, message)*/, 2 /*DT_QWORD*/); if (uMsg == 0x100 /*WM_KEYDOWN*/) { wParam=AkelPad.MemRead(lParam + (_X64?16:8) /*offsetof(MSG, wParam)*/, 2 /*DT_QWORD*/); AkelPad.MessageBox(0, "Key \"" + String.fromCharCode(wParam) + "\" with code \"" + wParam + "\" is pressed.", "", 0); //Exit message loop oSys.Call("user32::PostQuitMessage", 0); } } AkelPad.ThreadUnhook ____________________ Удалить хук из потока. ThreadUnhook(hHandle); Аргументы hHandle Дескриптор хука. Возвращаемое значение Ноль. Пример: См. пример ThreadHook. AkelPad.ScriptNoMutex _____________________ Изменить объекты синхронизации. ScriptNoMutex([nUnlockType]); Аргументы nUnlockType 0x1 //ULT_UNLOCKSCRIPTSQUEUE Разрешить одновременную работу других скриптов во время работы данного скрипта (по умолчанию). 0x2 //ULT_UNLOCKPROGRAMTHREAD Освободить поток программы от ожидания завершения скрипта. Только для внешнего вызова скрипта с кодом 2. 0x4 //ULT_LOCKMULTICOPY Запретить запуск нескольких копий скрипта. По умолчанию запуск нескольких копий разрешен. 0x8 //ULT_UNLOCKMULTICOPY Отменить запрет на запуск нескольких копий скрипта. Возвращаемое значение Число. Измененные объекты синхронизации, см. nUnlockType. Пример: AkelPad.ScriptNoMutex(); _TCHAR ______ Константа, определяющая окончание системных функций. Используется для метода AkelPad.SystemFunction().Call. _TCHAR Возвращаемое значение Строка. "A" - функции вызываются с окончанием на "A" (Windows 95/98/Me). "W" - функции вызываются с окончанием на "W" (Windows NT/2000/XP). Пример: //Как обеспечить поддержку юникода и не потерять совместимость с Win9x: var oSys=AkelPad.SystemFunction(); var lpBuffer; var pWinDir; if (lpBuffer=AkelPad.MemAlloc(256 * _TSIZE)) { oSys.Call("kernel32::GetWindowsDirectory" + _TCHAR, lpBuffer, 256); pWinDir=AkelPad.MemRead(lpBuffer, _TSTR); AkelPad.MemFree(lpBuffer); } _TSTR _____ Константа, определяющая тип строки. Используется для методов MemCopy и MemRead. _TSTR Возвращаемое значение Число. 0 - DT_ANSI - однобайтовая строка (Windows 95/98/Me). 1 - DT_UNICODE - двухбайтовая строка (Windows NT/2000/XP). Пример: См. пример _TCHAR. _TSIZE ______ Константа, определяющая размер символа в байтах. Используется для метода MemAlloc. _TSIZE Возвращаемое значение Число. 1 - sizeof(char) - один байт (Windows 95/98/Me). 2 - sizeof(wchar_t) - два байта (Windows NT/2000/XP). Пример: См. пример _TCHAR. _X64 ____ Константа, определяющая битность программы - x86 или x64. _X64 Возвращаемое значение Число. 0 - версия x86. 1 - версия x64. Пример: if (_X64) WScript.Echo("x64 версия"); else WScript.Echo("x86 версия");