User:Unsane/MirLua/m core

From Miranda NG
Jump to navigation Jump to search

Этот модуль изначально импортирован в глобальную таблицу и доступен через переменную m в любом модуле. Он предоставляет доступ к основным возможностям ядра Miranda NG.

Именованные события

CreateHookableEvent

Создает событие

Параметры
name
Тип: string
Имя события
Результат
Тип: light userdata
Возвращает дескриптор события, если событие было успешно создано, иначе nil
Пример
local hEvent = m.CreateHookableEvent('MyEvent')

HookEvent

Устанавливает функцию обратного вызова ("ловушку") для реакции на вызов события. Ловушки вызываются в порядке добавления по цепочке друг за другом.

Сигнатура ловушки: function (wParam, lParam) return 0 end.

Корректным результатом работы ловушки является 0. При возврате 1 следующие в цепочке ловушки не будут вызваны.

Параметры
name
Тип: string
Имя события.
hook
Тип: function
Функция-ловушка, которая будет вызвана при наступлении события.
Результат
Тип: light userdata
Возвращает дескриптор ловушки, если ловушка была успешно создана, иначе nil
Пример
local hHook = m.HookEvent('MyEvent', function(w, l)
  print('MyEvent is raised!')
end)

UnhookEvent

Удаляет ловушку из цепочки вызовов события.

Параметры
hEvent
Тип: light userdata
Дескриптор события, который был получен при вызове CreateHookableEvent
Результат
Тип: 'boolean
Возвращает true, если функции-ловушки успешно удалена, иначе false.
Пример
m.UnhookEvent(hHook)

NotifyEventHooks

Поочередно вызывает все ловушки в цепочке вызова события.

Параметры
hEvent
Тип: light userdata
Дескриптор события, который был получен при вызове CreateHookableEvent.
wParam
lParam
Результат
Тип: boolean
Возвращает true, если вызваны все функции-ловушки, иначе false.
Пример
m.NotifyEventHooks(hEvent)


Именованные сервисные функции

CreateServiceFunction

Создает сервисную функцию ("сервис")

Параметры
name
Тип: string
Имя сервиса.
Результат
Тип: light userdata
Возвращает дескриптор сервиса, если сервис бы успешно создан, иначе nil
Пример
local hService = m.CreateServiceFunction('MyService', function(w, l)
  print('MyServiceis called!')
end)

CallService

Вызывает сервис с параметрами

Параметры
name
Тип: string
Имя сервиса
wParam
lParam
Результат
Тип: number
Возвращает результат выполнения сервиса или CALLSERVICE_NOTFOUND
Пример
m.CallService('MyService', 0, 0)

ServiceExists

Проверяет существование сервиса по имени

Параметры
name
Тип: string
Имя сервиса
Результат
Тип: boolean
Возвращает true, если сервис существует, иначе false
Пример
if m.ServiceExists('MyService') then
  m.CallService('MyService')
end


DestroyServiceFunction

Удаляет сервисную функцию

Параметры
hService
Тип: light userdata
Дескриптор сервиса, полученный при вызове CreateServiceFunction
Пример
m.DestroyServiceFunction(hService)

Остальное

IsPluginLoaded

Проверяет загружен ли плагин по его uuid

Параметры
uuid
Тип: string
Uuid плагина в формате xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Результат
Тип: boolean
Возвращает true, если плагин загружен, иначе false.
Пример
if m.IsPluginLoaded('{F0FDF73A-753D-499d-8DBA-336DB79CDD41}') then
  print('Advanced auto away plugin is loaded!')
end

Utf8DecodeA

Конвертирует содержимое lua строки в ANSI (кодовая страница берется из текущего языкового пакета).

text
Тип: string
Результат
Тип: string
Пример
m.CallService("Quotes/Import", 0, Utf8DecodeA('c:\\quotes.xml'))


Utf8DecodeW

Конвертирует содержимое lua строки в unicode (utf-16)

text
Тип: string
Результат
Тип: string
Пример
m.CallService("Popup/ShowMessageW", m.Utf8DecodeW('Hello, World!'), 2)


Translate

Переводит строку на язык текущего языкового пакета

text
Тип: string
Результат
Тип: string
Пример
m.Translate('Exit')


ReplaceVariables

Заменяет переменные ядра Miranda NG в строке

text
Результат
Тип: string
Пример
local profileName = m.ReplaceVariables('%miranda_profilename%')

Константы

NULL

Нулевой указатель

Тип: light userdata
Пример
if hEvent == m.NULL then
  print('Event handle is empty!')
end

INVALID_HANDLE_VALUE

Невалидный дескриптор

Тип: light userdata
Пример
if hEvent == m.NULL then
  print('Event handle is invalid!')
end

CALLSERVICE_NOTFOUND

Результат вызова несуществующего сервиса

Тип: number
Пример
local result = m.CallService('MyService')
if result == m.CALLSERVICE_NOTFOUND then
  print('Service is not found!')
end