User:Unsane/MirLua/m core: Difference between revisions

From Miranda NG
Jump to navigation Jump to search
 
(11 intermediate revisions by the same user not shown)
Line 22: Line 22:


Корректным результатом работы ловушки является 0. При возврате 1 следующие в цепочке ловушки не будут вызваны.
Корректным результатом работы ловушки является 0. При возврате 1 следующие в цепочке ловушки не будут вызваны.
В качестве wParam/lParam поддерживаются следующие типы: '''boolean''', '''number''', '''string''', '''light userdata''', '''userdata'''.
;Параметры
;Параметры
: '''''name'''''
: '''''name'''''
Line 47: Line 45:
:: Дескриптор события, который был получен при вызове [[#CreateHookableEvent|CreateHookableEvent]]
:: Дескриптор события, который был получен при вызове [[#CreateHookableEvent|CreateHookableEvent]]
; Результат
; Результат
: Тип: '''boolean''
: Возвращает '''true''', если функции-ловушки успешно удалена, иначе '''false'''.
: Возвращает '''true''', если функции-ловушки успешно удалена, иначе '''false'''.
; Пример
; Пример
Line 54: Line 53:
Поочередно вызывает все ловушки в цепочке вызова события.
Поочередно вызывает все ловушки в цепочке вызова события.
; Параметры
; Параметры
: ''hEvent''
: '''''hEvent'''''
:: Тип: '''light userdata'''
:: Тип: '''light userdata'''
:: Дескриптор события, который был получен при вызове [[#CreateHookableEvent|CreateHookableEvent]].
:: Дескриптор события, который был получен при вызове [[#CreateHookableEvent|CreateHookableEvent]].
: wParam
: ''wParam''
: lParam
: ''lParam''
; Результат
; Результат
: Тип: '''boolean'''
: Тип: '''boolean'''
Line 65: Line 64:
{{Content:MirLua/Example|code=m.NotifyEventHooks(hEvent)}}
{{Content:MirLua/Example|code=m.NotifyEventHooks(hEvent)}}


<!--
===DestroyHookableEvent===
===DestroyHookableEvent===
Удаляет событие. Также удаляются все ловушки из цепочки вызовов. Если вызов события еще не завершен, то цепочка вызовов обрывается после выполнения текущей ловушки.
Удаляет событие. Также удаляются все ловушки из цепочки вызовов. Если вызов события еще не завершен, то цепочка вызовов обрывается после выполнения текущей ловушки.
Line 75: Line 75:
: Возвращает '''true''', если событие успешно удалено, иначе '''false'''
: Возвращает '''true''', если событие успешно удалено, иначе '''false'''
{{Content:MirLua/Example|code=m.DestroyHookableEvent(hEvent)}}
{{Content:MirLua/Example|code=m.DestroyHookableEvent(hEvent)}}
-->


==Именованные сервисные функции==
==Именованные сервисные функции==
===CreateServiceFunction===
===CreateServiceFunction===
Создает именованную сервисную функцию
Создает сервисную функцию ("сервис")
; Параметры
: '''''name'''''
:: Тип: '''string'''
:: Имя сервиса.
; Результат
: Тип: '''light userdata'''
: Возвращает дескриптор сервиса, если сервис бы успешно создан, иначе nil
; Пример
{{Content:MirLua/Example|code=local hService = m.CreateServiceFunction('MyService', function(w, l)
{{Content:MirLua/Example|code=local hService = m.CreateServiceFunction('MyService', function(w, l)
   print('MyServiceis called!')
   print('MyServiceis called!')
end)
end)
}}
}}


===CallService===
===CallService===
Вызывает именованную сервисную функцию
Вызывает сервис с параметрами
; Параметры
: '''''name'''''
:: Тип: '''string'''
:: Имя сервиса
: ''wParam''
: ''lParam''
; Результат
: Тип: '''number'''
: Возвращает результат выполнения сервиса или [[#CALLSERVICE_NOTFOUND|CALLSERVICE_NOTFOUND]]
; Пример
{{Content:MirLua/Example|code=m.CallService('MyService', 0, 0)}}
{{Content:MirLua/Example|code=m.CallService('MyService', 0, 0)}}


===ServiceExists===
===ServiceExists===
Проверяет существование сервиса по имени
Проверяет существование сервиса по имени
; Параметры
: '''''name'''''
:: Тип: '''string'''
:: Имя сервиса
; Результат
: Тип: '''boolean'''
: Возвращает '''true''', если сервис существует, иначе '''false'''
; Пример
{{Content:MirLua/Example|code=if m.ServiceExists('MyService') then
{{Content:MirLua/Example|code=if m.ServiceExists('MyService') then
   m.CallService('MyService')
   m.CallService('MyService')
Line 99: Line 124:
===DestroyServiceFunction===
===DestroyServiceFunction===
Удаляет сервисную функцию
Удаляет сервисную функцию
; Параметры
: '''''hService'''''
:: Тип: '''light userdata'''
:: Дескриптор сервиса, полученный при вызове [[#CreateServiceFunction|CreateServiceFunction]]
; Пример
{{Content:MirLua/Example|code=m.DestroyServiceFunction(hService)}}
{{Content:MirLua/Example|code=m.DestroyServiceFunction(hService)}}


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


===Utf8DecodeA===
===Utf8DecodeA===
Конвертирует содержимое lua строки в ANSI
Конвертирует содержимое lua строки в ANSI (кодовая страница берется из текущего языкового пакета).
: '''''text'''''
:: Тип: '''string'''
; Результат
: Тип: '''string'''
; Пример
{{Content:MirLua/Example|code=m.CallService("Quotes/Import", 0, Utf8DecodeA('c:\\quotes.xml'))}}
{{Content:MirLua/Example|code=m.CallService("Quotes/Import", 0, Utf8DecodeA('c:\\quotes.xml'))}}




===Utf8DecodeW===
===Utf8DecodeW===
Конвертирует содержимое lua строки в Unicode
Конвертирует содержимое lua строки в unicode (utf-16)
: '''''text'''''
:: Тип: '''string'''
; Результат
: Тип: '''string'''
; Пример
{{Content:MirLua/Example|code=m.CallService("Popup/ShowMessageW", m.Utf8DecodeW('Hello, World!'), 2)}}
{{Content:MirLua/Example|code=m.CallService("Popup/ShowMessageW", m.Utf8DecodeW('Hello, World!'), 2)}}


Line 123: Line 169:
===Translate===
===Translate===
Переводит строку на язык текущего языкового пакета
Переводит строку на язык текущего языкового пакета
: '''''text'''''
:: Тип: '''string'''
; Результат
: Тип: '''string'''
; Пример
{{Content:MirLua/Example|code=m.Translate('Exit')}}
{{Content:MirLua/Example|code=m.Translate('Exit')}}


Line 128: Line 179:
===ReplaceVariables===
===ReplaceVariables===
Заменяет переменные ядра Miranda NG в строке
Заменяет переменные ядра Miranda NG в строке
: '''''text'''''
; Результат
: Тип: '''string'''
; Пример
{{Content:MirLua/Example|code=local profileName = m.ReplaceVariables('%miranda_profilename%')}}
{{Content:MirLua/Example|code=local profileName = m.ReplaceVariables('%miranda_profilename%')}}
==Константы==
===NULL===
Нулевой указатель
: Тип: '''light userdata'''
;Пример
{{Content:MirLua/Example|code=
if hEvent == m.NULL then
  print('Event handle is empty!')
end
}}
===INVALID_HANDLE_VALUE===
Невалидный дескриптор
:Тип: '''light userdata'''
;Пример
{{Content:MirLua/Example|code=
if hEvent == m.NULL then
  print('Event handle is invalid!')
end
}}
===CALLSERVICE_NOTFOUND===
Результат вызова несуществующего сервиса
:Тип: '''number'''
;Пример
{{Content:MirLua/Example|code=
local result = m.CallService('MyService')
if result == m.CALLSERVICE_NOTFOUND then
  print('Service is not found!')
end
}}

Latest revision as of 22:50, 3 December 2015

Этот модуль изначально импортирован в глобальную таблицу и доступен через переменную 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