Miranda NG Official Community Forum

Miranda NG русскоязычный форум => Плагины => Topic started by: unsane on 04 07 2015, 18:46:03

Title: MirLua
Post by: unsane on 04 07 2015, 18:46:03
Данный плагин добавляет возможность расширения Miranda NG скриптами, написанными на языке Lua.
Скрипты - файлы с расширением ".lua", загружаются по умолчанию из папок "%miranda_path%\Scripts" и "%miranda_userdata%\Scripts".
Плагин следующие модули для взаимодействия с Miranda NG:
Примеры работы с модулями находятся в вики (http://wiki.miranda-ng.org/index.php?title=Plugin:MirLua/ru).
Title: Re: MirLua
Post by: watcher on 04 07 2015, 19:28:30
Простенький пример - добавление в главное меню пункта перезагрузки:

Code: [Select]
local clist = require("m_clist")
local icolib = require("m_icolib")

m.CreateServiceFunction("Lua/Restart",
  function() m.CallService("Miranda/System/Restart", 1, 0) end)

clist.AddMainMenuItem({
  Name = "Restart",
  Service = "Lua/Restart",
  Uid = '9FC57A01-FAC6-41AC-A009-52F1C6594095',
  Icon = icolib.AddIcon('restart', 'Restart')
})
Title: Re: MirLua
Post by: watcher on 04 07 2015, 19:29:42
Добавление пунта перезагрузки языкового пакета:

Code: [Select]
local clist = require("m_clist")
local icolib = require("m_icolib")

clist.AddMainMenuItem({
  Name = "LangPack Reload",
  Service = "LangPack/Reload",
  Uid = '7EB16447-754B-43ED-940B-96EDBD92EDAC',
  Icon = icolib.AddIcon('langreload', 'LangPack Reload')
})
Title: Re: MirLua
Post by: watcher on 04 07 2015, 19:31:27
Кнопка "Send File" на панели кнопок TabSRMM:

Code: [Select]
local mbb = require('m_msg_buttonsbar')
local icolib = require('m_icolib')

local moduleName = 'watcherPackSendFile'
local BBBF_ISIMBUTTON = 32
local BBBF_ISRSIDEBUTTON = 128
local bbButton =
{
  Module = moduleName,
  ButtonID = 1,
  Flags = BBBF_ISIMBUTTON | BBBF_ISRSIDEBUTTON,
  Tooltip = m.Translate('Send File'),
  Icon = icolib.AddIcon(moduleName, 'Send File')
}

mbb.AddButton(bbButton)

mbb.OnMsgToolBarButtonPressed(function(w, l)
  if l.Module == moduleName and l.ButtonID == 1 then
    m.CallService('SRFile/SendCommand', l.hContact, 0)
  end
end)
Title: Re: MirLua
Post by: watcher on 04 07 2015, 19:33:16
Кнопка "Received Files" на панели кнопок TabSRMM:

Code: [Select]
local mbb = require('m_msg_buttonsbar')
local icolib = require('m_icolib')

local moduleName = 'watcherPackReceivedFiles'
local BBBF_ISIMBUTTON = 32
local BBBF_ISRSIDEBUTTON = 128
local bbButton =
{
  Module = moduleName,
  ButtonID = 1,
  Flags = BBBF_ISIMBUTTON | BBBF_ISRSIDEBUTTON,
  Tooltip = m.Translate('Received Files'),
  Icon = icolib.AddIcon(moduleName, 'Received Files')
}

mbb.AddButton(bbButton)

mbb.OnMsgToolBarButtonPressed(function(w, l)
  if l.Module == moduleName and l.ButtonID == 1 then
    m.CallService('SRFile/OpenContRecDir', l.hContact, 0)
  end
end)
Title: Re: MirLua
Post by: Mikalair on 04 07 2015, 19:33:33
Code: [Select]
-- ==LuaScript==
-- @name SmileyPackSwitcher
-- @description Switching big-small smileypack
-- @author MikalaiR
-- @version 1.5
-- ==/LuaScript==

-- ==Settings==
local fullpack = "Emoji_full"
-- ==/Settings==

local mbb = require('m_msg_buttonsbar')
local icolib = require('m_icolib')
local db = require('m_database')

local BBBF_ISLSIDEBUTTON = 64

local bbButton =
{
  Module = "MirLua_SmileyPackSwitcher",
  ButtonID = 1,
  Flags = BBBF_ISLSIDEBUTTON,
  Tooltip = "Big smiley pack",
  Icon = icolib.AddIcon('SmileySwitchIconD', 'SmileyPackSwitcher icon')
}

mbb.AddButton(bbButton)

mbb.OnMsgToolBarButtonPressed(function(w, l)
if l.Module == bbButton.Module and l.ButtonID == bbButton.ButtonID then
if db.GetContactSetting(l.hContact, "SmileyAdd", "CustomCategory") == fullpack then
db.DeleteContactSetting(l.hContact, "SmileyAdd", "CustomCategory")
else
db.WriteContactSetting(l.hContact, "SmileyAdd", "CustomCategory", fullpack)
end
end
end)
Code: [Select]
-- ==LuaScript==
-- @name LToButton
-- @description
-- @author MikalaiR
-- @version 1.1
-- ==/LuaScript==

-- ==Settings==
-- ==/Settings==

local mbb = require('m_msg_buttonsbar')
local icolib = require('m_icolib')
local vars = require('m_variables')
local db = require('m_database')
local message = require('m_message')
local BBBF_ISLSIDEBUTTON = 64

function GetCurrentSong()
local result = ""
local strArtist = vars.FormatString("%listening_artist%")
local strTitle = vars.FormatString("%listening_title%")

if strArtist ~= "" and strTitle ~= "" then
result = strArtist .. " - " .. strTitle
end
return result
end

function GetOutputText(isChat)
local result = ""
local strCurrentSong = GetCurrentSong()
if strCurrentSong ~= "" then
if isChat ~= 0 then
result = "/me слушает " .. strCurrentSong
else
result = "Я слушаю " .. strCurrentSong
end
else
if isChat ~= 0 then
result = "/me ничего не слушает"
else
result = "Я ничего не слушаю"
end
end
return result
end

local bbButton =
{
  Module = "MirLua",
  ButtonID = 3,
  Flags = BBBF_ISLSIDEBUTTON,
  Tooltip = "Я слушаю...",
  Icon = icolib.AddIcon('LTButtonIcon', 'ListeningTo button icon')
}

mbb.AddButton(bbButton)

mbb.OnMsgToolBarButtonPressed(function(w, l)
    if l.Module == bbButton.Module and l.ButtonID == bbButton.ButtonID then
local contactProto = db.GetContactSetting(l.hContact, "Protocol", "p")
local text = GetOutputText(db.GetContactSetting(l.hContact, contactProto, "ChatRoom", 0))
message.Paste(l.hContact, text)
    end
end)
//обновлено 20.07.2015
Title: Re: MirLua
Post by: watcher on 04 07 2015, 19:58:12
Ещё один вариант для кнопки listening to:

Code: [Select]
local mbb = require('m_msg_buttonsbar')
local icolib = require('m_icolib')
local variables = require('m_variables')
local message = require('m_message')

local moduleName = 'watcherPackListeningTo'
local BBBF_ISCHATBUTTON = 16
local BBBF_ISIMBUTTON = 32
local BBBF_ISLSIDEBUTTON = 64
local IDC_MESSAGE = 1002
local IDC_CHATMESSAGE = 1009
local EM_REPLACESEL = tonumber('00C2', 16)
local bbButton =
{
  Module = moduleName,
  ButtonID = 1,
  Flags = BBBF_ISCHATBUTTON | BBBF_ISIMBUTTON | BBBF_ISLSIDEBUTTON,
  Tooltip = m.Translate('Listening To'),
  Icon = icolib.AddIcon(moduleName, 'Listening To')
}

mbb.AddButton(bbButton)

mbb.OnMsgToolBarButtonPressed(function(w, l)
  if l.Module == moduleName and l.ButtonID == 1 then
    local text = variables.FormatString('?puts(vl,`/me is listening to `%listening_artist%` - [`%listening_year%` - `%listening_album%`] - `%listening_track%`. `%listening_title%`.`)?if(?strncmp(!get(vl),`/me is listening to  - [ - ] - . .`,34),`/me is  listening to silence...`,!get(vl))')
    message.Paste(l.hContact, text)
  end
end)
Title: Re: MirLua
Post by: watcher on 08 07 2015, 06:37:01
Скрипты, залитые мной обновлены для MirLua версии 0.11.3.1 от 08.07.15
Title: Re: MirLua
Post by: Dimsok on 20 07 2015, 19:51:12
А как можно свои иконки добавлять?
Title: Re: MirLua
Post by: Mikalair on 20 07 2015, 20:04:26
Dimsok,
Code: [Select]
m_icolib = require('m_icolib')
local icon = m_icolib.AddIcon("icon_id", "Icon Name")
Title: Re: MirLua
Post by: Dimsok on 20 07 2015, 20:28:02
А где ид для иконок искать? Во всех представленных кнопках у меня одна и та же, хотя в них иды разные
Title: Re: MirLua
Post by: Dimsok on 20 07 2015, 20:33:38
Аа, все понял. Там вообще не нужен никакой ид. Просто через касомизацию иконок сменить
Title: Re: MirLua
Post by: Dimsok on 20 07 2015, 22:48:12
Какой код использовать, чтоб получилась кнопка для вставки сообщения /new (для омегла)? Если возможно, то чтоб отправлялось сразу как в "quick replies"
Title: Re: MirLua
Post by: unsane on 21 07 2015, 12:50:01
Dimsok, например так:
Code: [Select]
local mbb = require('m_msg_buttonsbar')
local icolib = require('m_icolib')
local message = require('m_message')

local script = {}

local moduleName = 'omegleNewCommand'
local description = m.Translate('Send /new')

local BBBF_ISCHATBUTTON = 16
local BBBF_ISLSIDEBUTTON = 64

function script.Load()
  mbb.AddButton({
    Module = moduleName,
    ButtonID = 1,
    Flags = BBBF_ISCHATBUTTON | BBBF_ISLSIDEBUTTON,
    Tooltip = description,
    Icon = icolib.AddIcon(moduleName, description)
  })
end

mbb.OnMsgToolBarButtonPressed(function(w, l)
  if l.Module == moduleName and l.ButtonID == 1 then
    message.Send(l.hContact, '/new')
  end
end)

function script.Unload()
  mbb.RemoveButton(bbButton)
end

return script;
Title: Re: MirLua
Post by: Dimsok on 21 07 2015, 14:59:51
Unsane, у меня с этим скриптом ошибку при старте миранда выдает
Title: Re: MirLua
Post by: unsane on 21 07 2015, 17:59:58
Должно заработать после следующего ночника  ::)
Title: Re: MirLua
Post by: Dimsok on 22 07 2015, 07:54:36
Работать-то работает, только толку немного - отображается только в окне сообщения для одиночных контактов, а не для групп. Лучше бы чтоб наоборот - только в группах показывалась, а в обычном окне зачем будет бестолку место занимать
Title: Re: MirLua
Post by: Dimsok on 22 07 2015, 07:59:05
Ааа, там же настраивается через плагин. Думал, в самом скрипте прописывается. Просто у меня из трех скриптов один автоматом в групповых чатах прописался
Title: Re: MirLua
Post by: unsane on 22 07 2015, 12:20:43
Dimsok, исправил скрипт
Title: Re: MirLua
Post by: Ищезаяц on 02 08 2015, 09:39:41
как вставить некий сферический блаблабла в поле ввода по хоткею?
в одном случае мне надо например по нажатию F5 вставлять "/me " в поле ввода.
в других отправлять конкретную фразу или из вариаблесов нечто. бросьте примерчиков плиз )
Title: Re: MirLua
Post by: Ищезаяц on 24 09 2015, 21:27:00
Напоминалка одному хорошему человеку:

значицца о расширении yarelay скриптиком на lua:
трэба получать собщение "ID:Nick:Proto: Message" и отвечать печатая по схеме "ID, Message"
правда сам по себе yarelay никакие номера собщениям не присваивает
или мы говорим о замене плагина скриптом? :))
Title: Re: MirLua
Post by: unsane on 25 09 2015, 20:03:21
Наметки для relay-скрипта
Code: [Select]
local db = require('m_database')
local proto = require('m_protocols')
local message = require('m_message')

local relayContact = 0

proto.OnReceiveMessage(function(w, l)
  if l.hContact ~= relayContact then
    local module = db.GetSetting(l.hContact, 'Protocol', 'p')
    local nick = db.GetSetting(l.hContact, module, 'Nick')
    local account = proto.GetAccount(module)
    local text = string.format('%d:%s:%s:%s', l.hContact, nick, account.ProtoName, l.Message)
    message.Send(relayContact, text)
  else
    local hContact, text = l.Message:match('^(%d+):(.*)$')
    if hContact ~= relayContact then
      message.Send(tonumber(hContact), text)
    end
  end
end)

p.s. нужно заменить в "local relayContact = 0" 0 на номер релейного контакта
Title: Re: MirLua
Post by: Ищезаяц on 27 09 2015, 05:46:32
странно, вчера всё пересылалось - сегодня нет
Title: Re: MirLua
Post by: Ищезаяц on 27 09 2015, 11:53:13
оказалось что сегодня всё летело одному знакомому во вконтактик 8)
получается что номер не уникальный. либо может изменится при перезапуске или обновлении плагов или ещё там чего
Title: Re: MirLua
Post by: donald on 17 05 2016, 07:27:34
Здравствуйте, можно ли узнать о перспективе данного плагина? В стабильной версии его нет - только в разработке. Собственно интересует озвученный выше OnReceiveMessage ? Попробовал вызвать эту функцию - получаю ошибку, что такой нет.
Title: Re: MirLua
Post by: unsane on 17 05 2016, 11:20:33
donald, в стабильно версии будет после следующего релиза.
OnReceiveMessage удален. Вместо него можно вот так сделать:
Code: [Select]
m.HookEvent("MirLua/RecvMessage", function(w, l)
  local ccd = CCSDATA(l)
  print(ccd.Message)
end)
Title: Re: MirLua
Post by: donald on 17 05 2016, 16:24:53
Спасибо, так получилось, только print у меня не работает. Пришлось так
Code: [Select]
winapi = require('winapi')

local hHook = m.HookEvent("MirLua/RecvMessage", function(w, l)
    local ccd = CCSDATA(l)
winapi.MessageBox(_, ccd.Message, "MirLua", 0, 10000)
--  print(ccd.Message)
end)
Отправил в личку сообщение.
Title: Re: MirLua
Post by: donald on 18 05 2016, 16:23:21
А можно общий вопрос, как узнать, что нужно использовать CCSDATA(l), "MirLua/RecvMessage", Message и.п. Дело в том, что мне нужно еще:
1. Получить адрес отправителя, что-бы ответить
2. Хорошо бы прекратить дальнейшую обработку хука, чтобы сообщение вообще не показывалось получателю.

Пожалуй я лучше в целом скажу что хочу:
Нужно, чтобы по получении сообщения с определенным текстом, запускалась сторонняя программа, а потом определенный текст отправлялся бы обратно.
Title: Re: MirLua
Post by: unsane on 18 05 2016, 17:12:39
Как-то так:
Code: [Select]
message = require('m_message')
winapi = require('winapi')

m.HookEvent("MirLua/RecvMessage", function(w, l)
  local ccd = CCSDATA(l)
  if ccd.Message == 'stopword' then
    winapi.ShellExecute('command', 'file', 'args', 0)
    message.Send(ccd.hContact, ccd.Message)
    return 1;
  end
end)
Однако, прекращение дальнейшей обработки хука будет работать только в следующем ночнике.
Title: Re:MirLua
Post by: donald on 19 05 2016, 17:51:51
Спасибо. Работает. Еще вопрос, хочу добавить в PopUp окно возможность "быстрого ответа" через вызов QuickReplies.
Title: Re: MirLua
Post by: unsane on 20 05 2016, 09:15:07
donald, А можно как-то наглядно показать что нужно?
Title: Re: MirLua
Post by: donald on 20 05 2016, 16:06:58
unsane.
Приходит сообщение, всплывает окно (плагин PupUp), на нем текст
"Привед"
и кнопки
"Быстрый ответ" "Отправить" "О пользователе" "Меню контакта" "Закрепить" "Закрыть"

Можно ли, чтоб появилась еще кнопка "Стандартные ответы", позволяющая выбирать, и отправлять стандартные ответы (аналогично работе плагинов "QuickMessages" и "QuickReplies" в TabSRMM) ?

Если кнопку сделать нельзя, то может можно в "Меню контакта" (с.м. выше) в выпадающем списке добавить какую кнопку ?

Title: Re: MirLua
Post by: unsane on 23 05 2016, 13:59:48
Для первого варианта такого нужно дорабатывать плагин.
Для второго варианта примерно так:
Code: [Select]
clist = require('m_clist')
genmenu = require('m_genmenu')
message = require('m_message')

messages = {
  'Привет!',
  'Пока'
  -- и т.п.
}

m.CreateServiceFunction('Scripts/SendQuickMessage', function(w, l)
  local hContact = tonumber(w)
  local text = messages[tonumber(l)]
  message.Send(hContact, text)
end)

hRoot = clist.AddContactMenuItem({
  Name = 'Quick messages',
  Uid = 'DF2DEB8E-F33A-4C89-BB81-6638742C7B89'
})

for i,v in ipairs(messages) do
  local hItem = clist.AddContactMenuItem({
    Name = v,
    Flags = 0x0100,
    Service = 'Scripts/SendQuickMessage',
    Position = i,
    Parent = hRoot
  })
  genmenu.ConfigureMenuItem(hItem, 3, topointer(i))
end
p.s., ConfigureMenuItem будет работать только в следующем ночнике.
Title: Re: MirLua
Post by: stasR on 30 05 2016, 08:08:12
Модуль m_message не имеет описания.

Вообще, хочется попробовать написать аналог плагина MsgExport средствами MirLua. Unsane, как вы полагаете, это реально?
Title: Re: MirLua
Post by: unsane on 30 05 2016, 18:15:52
stasR, в m_message есть только Send и Paste, до описания руки пока не доходят..
На вскидку, написать и экспорт и импорт нет никаких проблем. Хотя, возможно, понадобятся доработки..
Title: Re: MirLua
Post by: unsane on 04 06 2016, 18:45:38
stasR, накидал простой аналог msg_export:
Code: [Select]
local db = require('m_database')

m.HookEvent("DB/Event/Added", function(w, l)
  local hContact = tonumber(w)
  local path = m.Parse('%miranda_userdata%\\History\\')
    .. db.GetContactInfo(hContact, 'Uid')
    .. '.log'
  local contactName = db.GetContactInfo(hContact, 'DisplayName')
  local message = GetMessage(tonumber(l), contactName)
  if message then
    local file = io.open(path, 'a+')
    if file then
      file:write(message)
      io.close(file)
    end
  end
end)

function GetMessage(hDbEvent, contactName)
  local event = DBEVENTINFO(hDbEvent)
  if event.Type == 0 then
    local isSent = event.Flags & 2 == 2
    local nick = isSent and 'me' or contactName
    local date = os.date("%d.%m.%Y %H:%M:%S", event.Timestamp)
    local data = BLOB.new(event.Blob, event.Length)
    return string.interpolate('{1} {2}:\t{3}\n', nick, date, toutf8(data))
  end
  return nil
end

function toutf8(bytes)
  local bytearr = {}
  for i = 1, #bytes do
    local v = bytes[i]
    local utf8byte = v < 0 and (0xff + v + 1) or v
    table.insert(bytearr, string.char(utf8byte))
  end
  return table.concat(bytearr)
end
Нужно чтобы путь до папки History существовал.
Title: Re: MirLua
Post by: donald on 16 06 2016, 15:25:42
Здравствуйте, есть ли возможность через mirlua, обновить данные конкретного контакта, полученного из shared roster? Собственно, проблема в следующем, XMPP протокол не сообщает клиентам, что в shared roster у контакта изменилась информация (фото телефон, еmail), в Миранде я нашел сервис UserInfo/Refresh из плагина UserInfoEx, но он  обновляет все контакты. Боюсь что если все сотрудники в 9 утра запустят Миранду, и начнут качать весь ростер, это будет довольно долго и тяжело для сервера. Я подумал, что смогу сообщить клиентам, какие контакты нужно обновлять, осталось понять как, запустить обновление конкретного контакта, передав функции jid контакта. Покурив исходники, получается что сервис UserInfo/Refresh вызывает сервис Proto/CallContactService(hContact, PSS_GETINFO,0,0)
PSS_GETINFO = 14
Но вызов функции
local hHook = m.CallService("Proto/CallContactService", 1441, 14,0,0 )
Приводит к аварийному закрытию Миранды.
Title: Re: MirLua
Post by: Mikalair on 16 06 2016, 15:34:45
Нужно вызывать через функцию CallContactService, которая в луа пока не реализована.
Title: Re: MirLua
Post by: unsane on 16 06 2016, 16:45:42
donald, можно попробовать сделать так:
Code: [Select]
local protocols = require('m_protocols')
local hContact = 1441
local account = protocols.GetAccount(hContact)
protocols.CallService(account.ModuleName, '/GetInfo')
Title: Re: MirLua
Post by: donald on 16 06 2016, 17:51:16
unsane У меня на строка
protocols.CallService(account.ModuleName, '/GetInfo'), Миранда падает. Похоже причина в account.ModuleName
Потому что если просто написать,
local mn = account.ModuleName - падает
Title: Re: MirLua
Post by: unsane on 16 06 2016, 18:03:52
А крешлог есть?
Title: Re: MirLua
Post by: donald on 16 06 2016, 18:21:47
Креш ниже:
-------------
Скрипт такой:
local protocols = require('m_protocols')
local hContact = 1441
local account = protocols.GetAccount(hContact)
local mn = account.ModuleName
-----------------------------------------------------------
Miranda Crash Report from 16 Jun 2016 21:12:34. Crash Dumper v.0.0.5.2

Likely cause of the crash plugin: MirLua

Exception: Access Violation at address 00000000690EC183. Reading from address 000000000000004B.

Stack Trace:
---------------------------------------------------------------
00000000690EC183 (MSVCR100 00000000690B0000): (filename not available) (0): memmove
00000000161C84E5 (MirLua 00000000161C0000): (filename not available) (0): (function-name not available)
00000000121F56DA (liblua 00000000121E0000): (filename not available) (0): lua_isyieldable
00000000121F584A (liblua 00000000121E0000): (filename not available) (0): lua_isyieldable
00000000121E4B7D (liblua 00000000121E0000): (filename not available) (0): luaopen_utf8
00000000121E2458 (liblua 00000000121E0000): (filename not available) (0): (function-name not available)
00000000121E29F0 (liblua 00000000121E0000): (filename not available) (0): (function-name not available)
00000000121F5856 (liblua 00000000121E0000): (filename not available) (0): lua_isyieldable
00000000121F4F4A (liblua 00000000121E0000): (filename not available) (0): lua_isyieldable
00000000121F5192 (liblua 00000000121E0000): (filename not available) (0): lua_isyieldable
00000000121FDEB1 (liblua 00000000121E0000): (filename not available) (0): lua_pcallk
00000000161D48AE (MirLua 00000000161C0000): (filename not available) (0): (function-name not available)
00000000161D5157 (MirLua 00000000161C0000): (filename not available) (0): (function-name not available)
00000000161D4B61 (MirLua 00000000161C0000): (filename not available) (0): (function-name not available)
00000000161D4C5B (MirLua 00000000161C0000): (filename not available) (0): (function-name not available)
00000000161D4CC5 (MirLua 00000000161C0000): (filename not available) (0): (function-name not available)
00000000161D675B (MirLua 00000000161C0000): (filename not available) (0): Unload
0000000012434029 (mir_core 0000000012420000): (filename not available) (0): GetSubscribersCount
0000000012435192 (mir_core 0000000012420000): (filename not available) (0): NotifyEventHooks
000000001226F756 (mir_app 0000000012240000): (filename not available) (0): mir_main
0000000140001EB2 (Miranda64 0000000140000000): (filename not available) (0): (function-name not available)
00000001400011FE (Miranda64 0000000140000000): (filename not available) (0): (function-name not available)
00000000775159ED (kernel32 0000000077500000): (filename not available) (0): BaseThreadInitThunk
000000007774B371 (ntdll 0000000077720000): (filename not available) (0): RtlUserThreadStart

CPU: Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz [Intel64 Family 6 Model 58 Stepping 9] [DEP Enabled] [4 CPUs]
Installed RAM: 4060 MBytes
Microsoft Windows 7 Professional Edition, 64-bit Service Pack 1 (build 7601)
Internet Explorer: 9.11.9600.18230 (build 99600)
Administrator privileges: No
OS Languages: (UI | Locale (User/System)) : Russian/Russian | Russian/Russian

Miranda NG Version: 0.95.5 alpha build #16853 x64
Build time: 19 May 2016 17:07:20
Profile: C:\Utenkov\Miranda\Miranda NG1\Profiles\Novard\Novard.dat (dbx mmap driver)
Language pack: Russian (RU) [0419]
Service Mode: No

Active Plugins (57):
¤ Actman.dll v.0.3.0.1 [19 May 2016 14:07:26] - Action manager
¤ AdvaImg.dll v.0.11.0.2 [19 May 2016 17:04:00] - Miranda image services
¤ AdvancedAutoAway.dll v.0.8.1.1 [19 May 2016 14:03:56] - Advanced Auto Away
¤ AIM.dll v.0.11.0.1 [19 May 2016 17:03:00] - AIM protocol
¤ Alarms.dll v.0.4.0.5 [19 May 2016 14:04:08] - Alarms
¤ AssocMgr.dll v.0.1.1.0 [19 May 2016 14:05:22] - File association manager
¤ AVS.dll v.0.95.3.4 [19 May 2016 17:02:49] - Avatar service
¤ BASS_interface.dll v.0.0.0.14 [19 May 2016 14:05:24] - BASS interface
¤ BuddyExpectator.dll v.0.1.2.3 [7 Jun 2016 4:06:08] - Buddy expectator
¤ ChangeKeyboardLayout.dll v.0.0.1.6 [24 May 2016 4:07:06] - Change keyboard layout
¤ Clist_modern.dll v.0.9.1.4 [19 May 2016 17:04:33] - Modern contact list
¤ CmdLine.dll v.0.0.4.6 [19 May 2016 14:04:40] - Command line
¤ CrashDumper.dll v.0.0.5.2 [19 May 2016 17:04:43] - Crash dumper
¤ Db_autobackups.dll v.0.0.0.10 [19 May 2016 14:03:38] - Db autobackuper
¤ DbEditorPP.dll v.4.0.1.1 [19 May 2016 14:04:48] - Database editor++
¤ Dbx_mmap.dll v.0.95.3.1 [19 May 2016 17:02:52] - Miranda NG mmap database driver
¤ Facebook.dll v.0.2.14.0 [19 May 2016 17:04:15] - Facebook RM
¤ FavContacts.dll v.0.1.0.3 [19 May 2016 14:03:36] - Favorite contacts
¤ FileAsMessage.dll v.0.0.2.4 [19 May 2016 14:04:34] - File as message |ANSI|
¤ Fingerprint.dll v.0.1.0.0 [19 May 2016 14:05:20] - Fingerprint NG
¤ Folders.dll v.0.2.0.2 [19 May 2016 14:03:38] - Custom profile folders
¤ GG.dll v.0.11.0.3 [19 May 2016 17:03:18] - Gadu-Gadu protocol
¤ HistoryPP.dll v.1.5.1.5 [18 May 2016 17:33:44] - History++
¤ ICQ.dll v.0.11.3.4 [19 May 2016 17:03:18] - IcqOscarJ protocol
¤ IgnoreState.dll v.0.0.3.0 [19 May 2016 14:03:40] - Ignore state
¤ Import.dll v.0.95.4.3 [19 May 2016 17:02:50] - Import contacts and messages
¤ IRC.dll v.0.11.0.3 [19 May 2016 17:03:06] - IRC protocol
¤ Jabber.dll v.0.11.0.4 [19 May 2016 17:03:25] - Jabber protocol
¤ KeepStatus.dll v.0.9.0.2 [19 May 2016 14:03:58] - Keep status
¤ MenuEx.dll v.1.3.0.10 [19 May 2016 14:03:42] - Menu item ext
¤ MessageState.dll v.0.0.1.0 [19 May 2016 14:06:48] - Message state
¤ MirLua.dll v.0.11.7.2 [19 May 2016 14:07:08] - MirLua
¤ MSN.dll v.0.12.1.1 [19 May 2016 17:03:18] - MSN protocol
¤ mTextControl.dll v.0.8.0.1 [19 May 2016 14:03:44] - Miranda text control
¤ NewAwaySys.dll v.0.4.0.4 [19 May 2016 14:06:40] - New Away System Mod
¤ NewsAggregator.dll v.0.1.0.2 [19 May 2016 14:05:14] - News aggregator
¤ NotifyAnything.dll v.0.0.2.8 [19 May 2016 14:05:42] - NotifyAnything
¤ Nudge.dll v.0.2.0.2 [19 May 2016 14:03:44] - Nudge
¤ PluginUpdater.dll v.0.1.2.5 [19 May 2016 17:04:57] - Plugin updater
¤ Popup.dll v.2.1.1.12 [19 May 2016 14:03:50] - Popup plus
¤ QuickMessages.dll v.0.0.4.2 [19 May 2016 14:03:46] - Quick messages
¤ QuickReplies.dll v.0.8.1.0 [19 May 2016 14:03:46] - Quick replies
¤ QuickSearch.dll v.1.4.2.0 [19 May 2016 14:07:28] - Quick Search
¤ RecentContacts.dll v.0.0.2.1 [19 May 2016 14:04:22] - Recent contacts
¤ SpellChecker.dll v.0.2.6.4 [19 May 2016 14:04:48] - Spell checker
¤ SplashScreen.dll v.0.1.2.3 [19 May 2016 14:03:54] - Splash screen
¤ StartupStatus.dll v.0.8.0.48 [19 May 2016 14:04:00] - StartupStatus
¤ TabSRMM.dll v.3.4.0.11 [19 May 2016 17:03:04] - TabSRMM
¤ Tipper.dll v.2.1.0.7 [19 May 2016 14:03:58] - Tipper
¤ TopToolBar.dll v.0.8.0.4 [19 May 2016 17:04:25] - TopToolBar
¤ TranslitSwitcher.dll v.0.1.0.1 [19 May 2016 14:04:02] - Switch layout or transliterate
¤ UInfoEx.dll v.0.8.5.0 [19 May 2016 14:04:12] - User info ext
¤ Variables.dll v.0.2.3.11 [19 May 2016 14:04:24] - Variables
¤ Yahoo.dll v.0.11.0.2 [19 May 2016 17:03:10] - Yahoo protocol
¤ YAPP.dll v.0.5.0.12 [19 May 2016 14:04:50] - YAPP
¤ YARelay.dll v.0.1.0.1 [19 May 2016 14:05:50] - YARelay
¤ ZeroNotify.dll v.0.0.0.5 [19 May 2016 14:04:06] - Zero notifications

Title: Re: MirLua
Post by: donald on 16 06 2016, 18:22:35
Остаток лога
Loaded Modules:
-------------------------------------------------------------------------------
C:\Utenkov\Miranda\Miranda NG1\Miranda64.exe  0000000140000000 - 000000014000A000 v.0.95.5.16853 [19 May 2016 17:07:20]
C:\Windows\SYSTEM32\ntdll.dll  0000000077720000 - 00000000778CA000 v.6.1.7601.19135 [22 Jan 2016 9:24:12]
C:\Windows\system32\kernel32.dll  0000000077500000 - 000000007761F000 v.6.1.7601.19135 [22 Jan 2016 9:15:31]
C:\Windows\system32\KERNELBASE.dll  000007FEFD4C0000 - 000007FEFD52B000 v.6.1.7601.19135 [22 Jan 2016 9:15:31]
C:\Windows\System32\SYSFER.DLL  00000000751B0000 - 0000000075237000 v.12.1.4013.4013 [6 Mar 2014 1:27:53]
C:\Windows\system32\USER32.dll  0000000077620000 - 000000007771A000 v.6.1.7601.19061 [10 Nov 2015 21:55:26]
C:\Windows\system32\GDI32.dll  000007FEFE9C0000 - 000007FEFEA27000 v.6.1.7601.19091 [8 Dec 2015 22:07:28]
C:\Windows\system32\LPK.dll  000007FEFE0F0000 - 000007FEFE0FE000 v.6.1.7601.19146 [5 Feb 2016 21:54:45]
C:\Windows\system32\USP10.dll  000007FEFE8D0000 - 000007FEFE99A000 v.1.626.7601.19054 [3 Nov 2015 22:04:51]
C:\Windows\system32\msvcrt.dll  000007FEFE4A0000 - 000007FEFE53F000 v.7.0.7601.17744 [16 Dec 2011 11:46:06]
C:\Windows\system32\ADVAPI32.dll  000007FEFE7D0000 - 000007FEFE8AB000 v.6.1.7601.19135 [22 Jan 2016 9:12:24]
C:\Windows\SYSTEM32\sechost.dll  000007FEFE9A0000 - 000007FEFE9BF000 v.6.1.7601.18869 [25 May 2015 21:19:09]
C:\Windows\system32\RPCRT4.dll  000007FEFDEF0000 - 000007FEFE01D000 v.6.1.7601.19135 [22 Jan 2016 9:19:02]
C:\Windows\system32\SHELL32.dll  000007FEFEBC0000 - 000007FEFF94A000 v.6.1.7601.19135 [22 Jan 2016 9:19:58]
C:\Windows\system32\SHLWAPI.dll  000007FEFE070000 - 000007FEFE0E1000 v.6.1.7601.17514 [21 Nov 2010 6:24:22]
C:\Utenkov\Miranda\Miranda NG1\MSVCR100.dll  00000000690B0000 - 0000000069182000 v.10.0.40219.325 [23 Jan 2016 15:17:32]
C:\Windows\system32\IMM32.DLL  000007FEFDEB0000 - 000007FEFDEDE000 v.6.1.7600.16385 [14 Jul 2009 4:41:09]
C:\Windows\system32\MSCTF.dll  000007FEFE100000 - 000007FEFE209000 v.6.1.7601.18731 [17 Jan 2015 5:48:38]
C:\Utenkov\Miranda\Miranda NG1\libs\mir_app.mir  0000000012240000 - 0000000012327000 v.0.95.5.16853 [19 May 2016 17:03:18]
C:\Windows\system32\WINMM.dll  000007FEFB630000 - 000007FEFB66B000 v.6.1.7600.16385 [14 Jul 2009 4:41:56]
C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.18837_none_fa3b1e3d17594757\COMCTL32.dll  000007FEFBA90000 - 000007FEFBC84000 v.6.10.7601.18837 [24 Apr 2015 21:12:05]
C:\Windows\system32\WS2_32.dll  000007FEFE020000 - 000007FEFE06D000 v.6.1.7601.17514 [21 Nov 2010 6:24:28]
C:\Windows\system32\NSI.dll  000007FEFDEE0000 - 000007FEFDEE8000 v.6.1.7600.16385 [14 Jul 2009 4:41:53]
C:\Windows\system32\UxTheme.dll  000007FEFBA30000 - 000007FEFBA86000 v.6.1.7600.16385 [14 Jul 2009 4:41:56]
C:\Windows\system32\COMDLG32.dll  000007FEFD900000 - 000007FEFD997000 v.6.1.7601.17514 [21 Nov 2010 6:24:22]
C:\Windows\system32\ole32.dll  000007FEFE290000 - 000007FEFE493000 v.6.1.7601.19131 [16 Jan 2016 22:01:29]
C:\Utenkov\Miranda\Miranda NG1\libs\zlib.mir  00000000124C0000 - 00000000124DB000 v.1.2.8.0 [19 May 2016 17:02:48]
C:\Utenkov\Miranda\Miranda NG1\libs\mir_core.mir  0000000012420000 - 000000001244A000 [19 May 2016 17:02:57]
C:\Windows\system32\VERSION.dll  000007FEFC510000 - 000007FEFC51C000 v.6.1.7600.16385 [14 Jul 2009 4:41:56]
C:\Windows\system32\Secur32.dll  000007FEFD240000 - 000007FEFD24B000 v.6.1.7601.19135 [22 Jan 2016 9:19:06]
C:\Windows\system32\SSPICLI.DLL  000007FEFD270000 - 000007FEFD295000 v.6.1.7601.19135 [22 Jan 2016 9:20:10]
C:\Program Files (x86)\Yandex\Punto Switcher\PSHook64.dll  000007FEF68D0000 - 000007FEF68DC000 v.4.1.4.568 [12 Oct 2015 11:22:36]
C:\Windows\system32\imagehlp.dll  000007FEFE8B0000 - 000007FEFE8C9000 v.6.1.7601.18288 [19 Oct 2013 5:18:57]
C:\Windows\system32\dwmapi.dll  000007FEFB5D0000 - 000007FEFB5E8000 v.6.1.7601.18917 [9 Jul 2015 20:58:26]
C:\Windows\system32\CRYPTBASE.dll  000007FEFD300000 - 000007FEFD30F000 v.6.1.7601.19135 [22 Jan 2016 9:13:04]
C:\Windows\system32\CLBCatQ.DLL  000007FEFD860000 - 000007FEFD8F9000 v.2001.12.8530.16385 [14 Jul 2009 4:40:15]
C:\Windows\system32\OLEAUT32.dll  000007FEFF950000 - 000007FEFFA27000 v.6.1.7601.18679 [26 Nov 2014 6:53:59]
C:\Windows\system32\explorerframe.dll  000007FEF6140000 - 000007FEF630A000 v.6.1.7601.19135 [22 Jan 2016 9:15:01]
C:\Windows\system32\DUser.dll  000007FEFB6C0000 - 000007FEFB703000 v.6.1.7600.16385 [14 Jul 2009 4:40:34]
C:\Windows\system32\DUI70.dll  000007FEFB710000 - 000007FEFB802000 v.6.1.7600.16385 [14 Jul 2009 4:40:34]
C:\Utenkov\Miranda\Miranda NG1\Plugins\CrashDumper.dll  0000000014B40000 - 0000000014B54000 v.0.0.5.2 [19 May 2016 17:04:43]
C:\Windows\system32\dbghelp.dll  000007FEF1FC0000 - 000007FEF20E5000 v.6.1.7601.17514 [21 Nov 2010 6:24:00]
C:\Utenkov\Miranda\Miranda NG1\Plugins\DbEditorPP.dll  0000000014D40000 - 0000000014D62000 v.4.0.1.1 [19 May 2016 14:04:48]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Dbx_mmap.dll  0000000014DA0000 - 0000000014DB6000 v.0.95.3.1 [19 May 2016 17:02:52]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Import.dll  0000000015D00000 - 0000000015D11000 v.0.95.4.3 [19 May 2016 17:02:50]
C:\Utenkov\Miranda\Miranda NG1\Core\stdcrypt.dll  0000000013100000 - 000000001310D000 v.0.95.5.16853 [19 May 2016 17:07:18]
C:\Utenkov\Miranda\Miranda NG1\Core\stdssl.dll  0000000013200000 - 0000000013209000 v.0.95.5.16853 [19 May 2016 17:07:14]
C:\Windows\system32\CRYPT32.dll  000007FEFD5D0000 - 000007FEFD73D000 v.6.1.7601.18839 [27 Apr 2015 22:23:13]
C:\Windows\system32\MSASN1.dll  000007FEFD4A0000 - 000007FEFD4AF000 v.6.1.7601.17514 [21 Nov 2010 6:24:22]
C:\Windows\system32\WSOCK32.dll  000007FEF9870000 - 000007FEF9879000 v.6.1.7600.16385 [14 Jul 2009 4:41:58]
C:\Windows\system32\Msftedit.dll  000007FEED490000 - 000007FEED556000 v.5.41.21.2510 [21 Nov 2010 6:24:01]
C:\Utenkov\Miranda\Miranda NG1\Plugins\AdvaImg.dll  00000000142A0000 - 0000000014352000 v.0.11.0.2 [19 May 2016 17:04:00]
C:\Utenkov\Miranda\Miranda NG1\MSVCP100.dll  000000006A250000 - 000000006A2E8000 v.10.0.40219.325 [23 Jan 2016 15:17:32]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Clist_modern.dll  0000000014860000 - 00000000148E7000 v.0.9.1.4 [19 May 2016 17:04:33]
C:\Windows\WinSxS\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.19061_none_3bd82ed1d8e2945c\gdiplus.dll  000007FEE9270000 - 000007FEE94A5000 v.5.2.7601.19061 [10 Nov 2015 21:45:30]
C:\Windows\system32\MSIMG32.dll  000007FEFAA00000 - 000007FEFAA07000 v.6.1.7600.16385 [14 Jul 2009 4:41:29]
C:\Windows\system32\WindowsCodecs.dll  000007FEFB390000 - 000007FEFB4F1000 v.6.2.9200.17251 [3 Feb 2015 6:31:16]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Actman.dll  00000000141A0000 - 0000000014206000 [19 May 2016 14:07:26]
C:\Utenkov\Miranda\Miranda NG1\Plugins\AdvancedAutoAway.dll  0000000014420000 - 0000000014432000 v.0.8.1.1 [19 May 2016 14:03:56]
C:\Utenkov\Miranda\Miranda NG1\Plugins\AIM.dll  0000000014460000 - 0000000014496000 v.0.11.0.1 [19 May 2016 17:03:00]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Alarms.dll  00000000144E0000 - 00000000144F5000 v.0.4.0.5 [19 May 2016 14:04:08]
C:\Utenkov\Miranda\Miranda NG1\Plugins\AssocMgr.dll  0000000014520000 - 0000000014536000 v.0.1.1.0 [19 May 2016 14:05:22]
C:\Utenkov\Miranda\Miranda NG1\Plugins\AVS.dll  0000000014600000 - 0000000014616000 v.0.95.3.4 [19 May 2016 17:02:49]
C:\Utenkov\Miranda\Miranda NG1\Plugins\BASS_interface.dll  00000000146E0000 - 00000000146EB000 v.0.0.0.14 [19 May 2016 14:05:24]
C:\Utenkov\Miranda\Miranda NG1\Plugins\BuddyExpectator.dll  0000000014780000 - 000000001478E000 v.0.1.2.3 [7 Jun 2016 4:06:08]
C:\Utenkov\Miranda\Miranda NG1\Plugins\ChangeKeyboardLayout.dll  00000000147C0000 - 00000000147CE000 v.0.0.1.6 [24 May 2016 4:07:06]
C:\Utenkov\Miranda\Miranda NG1\Plugins\CmdLine.dll  0000000014A60000 - 0000000014A75000 v.0.0.4.6 [19 May 2016 14:04:40]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Db_autobackups.dll  0000000014DE0000 - 0000000014DFB000 v.0.0.0.10 [19 May 2016 14:03:38]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Facebook.dll  0000000014EE0000 - 0000000014F41000 v.0.2.14.0 [19 May 2016 17:04:15]
C:\Utenkov\Miranda\Miranda NG1\libs\libjson.mir  00000000121A0000 - 00000000121B3000 [19 May 2016 17:02:53]
C:\Utenkov\Miranda\Miranda NG1\Plugins\FavContacts.dll  0000000014FC0000 - 0000000014FCF000 v.0.1.0.3 [19 May 2016 14:03:36]
C:\Windows\system32\mswsock.dll  000007FEFCC40000 - 000007FEFCC95000 v.6.1.7601.18254 [8 Sep 2013 5:27:14]
C:\Windows\System32\wshtcpip.dll  000007FEFC5E0000 - 000007FEFC5E7000 v.6.1.7600.16385 [14 Jul 2009 4:41:58]
C:\Utenkov\Miranda\Miranda NG1\Plugins\FileAsMessage.dll  0000000014FE0000 - 0000000014FED000 v.0.0.2.4 [19 May 2016 14:04:34]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Fingerprint.dll  0000000015000000 - 000000001501F000 v.0.1.0.0 [19 May 2016 14:05:20]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Folders.dll  0000000015220000 - 000000001522C000 v.0.2.0.2 [19 May 2016 14:03:38]
C:\Utenkov\Miranda\Miranda NG1\Plugins\GG.dll  0000000015280000 - 00000000152CA000 v.0.11.0.3 [19 May 2016 17:03:18]
C:\Utenkov\Miranda\Miranda NG1\Plugins\HistoryPP.dll  0000000015380000 - 000000001568A000 v.1.5.1.5 [18 May 2016 17:33:44]
C:\Windows\system32\winspool.drv  000007FEF2310000 - 000007FEF2381000 v.6.1.7601.17514 [21 Nov 2010 6:23:55]
C:\Windows\system32\RICHED20.DLL  000007FEF2F60000 - 000007FEF2FFE000 v.5.31.23.1230 [21 Nov 2010 6:24:15]
C:\Utenkov\Miranda\Miranda NG1\Plugins\ICQ.dll  0000000015B40000 - 0000000015BAB000 v.0.11.3.4 [19 May 2016 17:03:18]
C:\Utenkov\Miranda\Miranda NG1\Plugins\IgnoreState.dll  0000000015CE0000 - 0000000015CE9000 v.0.0.3.0 [19 May 2016 14:03:40]
C:\Utenkov\Miranda\Miranda NG1\Plugins\IRC.dll  0000000015D40000 - 0000000015D9A000 v.0.11.0.3 [19 May 2016 17:03:06]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Jabber.dll  0000000015E00000 - 0000000015EAF000 v.0.11.0.4 [19 May 2016 17:03:25]
C:\Windows\system32\DNSAPI.dll  000007FEFCAC0000 - 000007FEFCB1B000 v.6.1.7601.17570 [3 Mar 2011 9:24:15]
C:\Utenkov\Miranda\Miranda NG1\Plugins\KeepStatus.dll  0000000015F60000 - 0000000015F73000 v.0.9.0.2 [19 May 2016 14:03:58]
C:\Windows\system32\WININET.dll  000007FEFE540000 - 000007FEFE7C3000 v.11.0.9600.18231 [8 Feb 2016 20:19:35]
C:\Windows\system32\api-ms-win-downlevel-user32-l1-1-0.dll  000007FEFD740000 - 000007FEFD744000 v.6.2.9200.16492 [13 Jan 2013 23:31:48]
C:\Windows\system32\api-ms-win-downlevel-shlwapi-l1-1-0.dll  000007FEFD540000 - 000007FEFD544000 v.6.2.9200.16492 [13 Jan 2013 23:35:31]
C:\Windows\system32\api-ms-win-downlevel-version-l1-1-0.dll  000007FEFD530000 - 000007FEFD534000 v.6.2.9200.16492 [13 Jan 2013 23:31:40]
C:\Windows\system32\api-ms-win-downlevel-normaliz-l1-1-0.dll  000007FEFD7B0000 - 000007FEFD7B3000 v.6.2.9200.16492 [13 Jan 2013 23:35:31]
C:\Windows\system32\normaliz.DLL  00000000778F0000 - 00000000778F3000 v.6.1.7600.16385 [14 Jul 2009 4:31:40]
C:\Windows\system32\iertutil.dll  000007FEFD9A0000 - 000007FEFDC68000 v.11.0.9600.18231 [8 Feb 2016 21:27:14]
C:\Windows\system32\api-ms-win-downlevel-advapi32-l1-1-0.dll  000007FEFD5B0000 - 000007FEFD5B5000 v.6.2.9200.16492 [13 Jan 2013 23:35:18]
C:\Windows\system32\USERENV.dll  000007FEFD750000 - 000007FEFD76E000 v.6.1.7601.17514 [21 Nov 2010 6:24:03]
C:\Windows\system32\profapi.dll  000007FEFD4B0000 - 000007FEFD4BF000 v.6.1.7600.16385 [14 Jul 2009 4:41:53]
C:\Windows\system32\IPHLPAPI.DLL  000007FEFA660000 - 000007FEFA687000 v.6.1.7601.17514 [21 Nov 2010 6:24:16]
C:\Windows\system32\WINNSI.DLL  000007FEFA720000 - 000007FEFA72B000 v.6.1.7600.16385 [14 Jul 2009 4:41:56]
C:\Utenkov\Miranda\Miranda NG1\Plugins\MenuEx.dll  0000000016040000 - 0000000016051000 v.1.3.0.10 [19 May 2016 14:03:42]
C:\Utenkov\Miranda\Miranda NG1\Plugins\MessageState.dll  0000000016080000 - 0000000016089000 v.0.0.1.0 [19 May 2016 14:06:48]
C:\Utenkov\Miranda\Miranda NG1\Plugins\MirLua.dll  00000000161C0000 - 00000000161E7000 v.0.11.7.2 [19 May 2016 14:07:08]
C:\Utenkov\Miranda\Miranda NG1\libs\liblua.mir  00000000121E0000 - 000000001220E000 [19 May 2016 14:06:58]
C:\Utenkov\Miranda\Miranda NG1\Plugins\MSN.dll  00000000165A0000 - 00000000165ED000 v.0.12.1.1 [19 May 2016 17:03:18]
C:\Utenkov\Miranda\Miranda NG1\Plugins\mTextControl.dll  0000000016640000 - 000000001664C000 v.0.8.0.1 [19 May 2016 14:03:44]
C:\Utenkov\Miranda\Miranda NG1\Plugins\NewAwaySys.dll  00000000166A0000 - 00000000166D6000 v.0.4.0.4 [19 May 2016 14:06:40]
C:\Utenkov\Miranda\Miranda NG1\Plugins\NewsAggregator.dll  0000000016740000 - 0000000016757000 v.0.1.0.2 [19 May 2016 14:05:14]
C:\Utenkov\Miranda\Miranda NG1\Plugins\NotifyAnything.dll  0000000016980000 - 0000000016997000 v.0.0.2.8 [19 May 2016 14:05:42]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Nudge.dll  00000000169C0000 - 00000000169CF000 v.0.2.0.2 [19 May 2016 14:03:44]
C:\Utenkov\Miranda\Miranda NG1\Plugins\PluginUpdater.dll  0000000016B40000 - 0000000016B59000 v.0.1.2.5 [19 May 2016 17:04:57]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Popup.dll  0000000016BA0000 - 0000000016BE4000 v.2.1.1.12 [19 May 2016 14:03:50]
C:\Utenkov\Miranda\Miranda NG1\Plugins\QuickMessages.dll  0000000016C60000 - 0000000016C6E000 v.0.0.4.2 [19 May 2016 14:03:46]
C:\Utenkov\Miranda\Miranda NG1\Plugins\QuickReplies.dll  0000000016C80000 - 0000000016C89000 v.0.8.1.0 [19 May 2016 14:03:46]
C:\Utenkov\Miranda\Miranda NG1\Plugins\QuickSearch.dll  0000000016CA0000 - 0000000016CDB000 [19 May 2016 14:07:28]
C:\Utenkov\Miranda\Miranda NG1\Plugins\RecentContacts.dll  0000000016E20000 - 0000000016E2B000 v.0.0.2.1 [19 May 2016 14:04:22]
C:\Utenkov\Miranda\Miranda NG1\Plugins\SpellChecker.dll  0000000017420000 - 000000001743D000 v.0.2.6.4 [19 May 2016 14:04:48]
C:\Utenkov\Miranda\Miranda NG1\libs\hunspell.mir  0000000012000000 - 000000001205F000 v.1.3.4.0 [19 May 2016 14:04:24]
C:\Utenkov\Miranda\Miranda NG1\Plugins\SplashScreen.dll  0000000017460000 - 000000001746B000 v.0.1.2.3 [19 May 2016 14:03:54]
C:\Utenkov\Miranda\Miranda NG1\Plugins\StartupStatus.dll  00000000174C0000 - 00000000174D5000 v.0.8.0.48 [19 May 2016 14:04:00]
C:\Windows\system32\quartz.dll  000007FEEA2A0000 - 000007FEEA453000 v.6.6.7601.19091 [8 Dec 2015 22:07:36]
C:\Utenkov\Miranda\Miranda NG1\Plugins\TabSRMM.dll  0000000017660000 - 00000000176FF000 v.3.4.0.11 [19 May 2016 17:03:04]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Tipper.dll  00000000177A0000 - 00000000177CA000 v.2.1.0.7 [19 May 2016 14:03:58]
C:\Utenkov\Miranda\Miranda NG1\Plugins\TopToolBar.dll  0000000017900000 - 0000000017910000 v.0.8.0.4 [19 May 2016 17:04:25]
C:\Utenkov\Miranda\Miranda NG1\Plugins\TranslitSwitcher.dll  00000000179E0000 - 00000000179EB000 v.0.1.0.1 [19 May 2016 14:04:02]
C:\Utenkov\Miranda\Miranda NG1\Plugins\UInfoEx.dll  0000000017A60000 - 0000000017AC5000 v.0.8.5.0 [19 May 2016 14:04:12]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Variables.dll  0000000017B60000 - 0000000017B7C000 v.0.2.3.11 [19 May 2016 14:04:24]
C:\Windows\system32\pdh.dll  000007FEF8B60000 - 000007FEF8BAE000 v.6.1.7601.17514 [21 Nov 2010 6:24:00]
C:\Utenkov\Miranda\Miranda NG1\libs\Pcre16.mir  0000000012480000 - 000000001249B000 [19 May 2016 17:04:05]
C:\Utenkov\Miranda\Miranda NG1\Plugins\Yahoo.dll  0000000018160000 - 0000000018195000 v.0.11.0.2 [19 May 2016 17:03:10]
C:\Utenkov\Miranda\Miranda NG1\Plugins\YAPP.dll  0000000018260000 - 0000000018273000 v.0.5.0.12 [19 May 2016 14:04:50]
C:\Utenkov\Miranda\Miranda NG1\Plugins\YARelay.dll  00000000182A0000 - 00000000182A8000 v.0.1.0.1 [19 May 2016 14:05:50]
C:\Utenkov\Miranda\Miranda NG1\Plugins\ZeroNotify.dll  00000000182C0000 - 00000000182C8000 v.0.0.0.5 [19 May 2016 14:04:06]
C:\Utenkov\Miranda\Miranda NG1\Core\stdauth.dll  0000000013000000 - 0000000013009000 v.0.95.5.16853 [19 May 2016 17:07:20]
C:\Utenkov\Miranda\Miranda NG1\Core\stdfile.dll  0000000013140000 - 0000000013153000 v.0.95.5.16853 [19 May 2016 17:07:18]
C:\Utenkov\Miranda\Miranda NG1\Core\stdhelp.dll  0000000013180000 - 0000000013188000 v.0.95.5.16853 [19 May 2016 17:07:19]
C:\Utenkov\Miranda\Miranda NG1\Core\stdidle.dll  00000000131A0000 - 00000000131A8000 v.0.95.5.16853 [19 May 2016 17:07:17]
C:\Windows\system32\WTSAPI32.dll  000007FEFC6A0000 - 000007FEFC6B1000 v.6.1.7600.16385 [14 Jul 2009 4:41:58]
C:\Utenkov\Miranda\Miranda NG1\Core\stduseronline.dll  0000000013260000 - 0000000013267000 v.0.95.5.16853 [19 May 2016 17:07:16]
C:\Windows\system32\oleacc.dll  000007FEFABA0000 - 000007FEFABF4000 v.7.0.0.0 [27 Aug 2011 8:37:48]
C:\Utenkov\Miranda\Miranda NG1\plugins\bass\bass.dll  000007FEF59D0000 - 000007FEF5A29000 v.2.4.11.0 [23 Jan 2016 12:17:34]
C:\Windows\system32\MSACM32.dll  000007FEFAE10000 - 000007FEFAE28000 v.6.1.7600.16385 [14 Jul 2009 4:41:27]
C:\Windows\system32\dsound.DLL  000007FEEC890000 - 000007FEEC918000 v.6.1.7600.16385 [14 Jul 2009 4:40:33]
C:\Windows\system32\POWRPROF.dll  000007FEFBF50000 - 000007FEFBF7C000 v.6.1.7600.16385 [14 Jul 2009 4:41:53]
C:\Windows\system32\SETUPAPI.dll  000007FEFDC70000 - 000007FEFDE47000 v.6.1.7601.17514 [21 Nov 2010 6:24:28]
C:\Windows\system32\CFGMGR32.dll  000007FEFD770000 - 000007FEFD7A6000 v.6.1.7601.17514 [21 Nov 2010 6:24:00]
C:\Windows\system32\DEVOBJ.dll  000007FEFD550000 - 000007FEFD56A000 v.6.1.7600.16385 [14 Jul 2009 4:40:28]
C:\Windows\System32\MMDevApi.dll  000007FEFBED0000 - 000007FEFBF1B000 v.6.1.7600.16385 [14 Jul 2009 4:41:26]
C:\Windows\System32\PROPSYS.dll  000007FEFBDA0000 - 000007FEFBECC000 v.7.0.7601.17514 [21 Nov 2010 6:23:55]
C:\Windows\system32\AUDIOSES.DLL  000007FEFB540000 - 000007FEFB58F000 v.6.1.7601.18741 [3 Feb 2015 6:30:55]
C:\Utenkov\Miranda\Miranda NG1\Scripts\winapi.dll  0000000018420000 - 000000001842F000 [19 May 2016 14:07:02]
C:\Utenkov\Miranda\Miranda NG1\Scripts\m_variables.dll  0000000018400000 - 0000000018407000 [19 May 2016 14:07:02]
Title: Re: MirLua
Post by: unsane on 16 06 2016, 18:55:36
donald, желательно такие портянки убирать в тег
Code: [Select]
[spoiler] [/spoiler].
И еще бы очень помогли отладочные символы при создании крешлога: http://wiki.miranda-ng.org/index.php?title=Создание_краш-репортов (http://wiki.miranda-ng.org/index.php?title=Создание_краш-репортов).
Title: Re: MirLua
Post by: donald on 17 06 2016, 05:48:52
unsane После установки последней версии, при выполнении строки local mn = account.ModuleName, падать перестало.
Только я не понимаю, что должно произойти по предложенной Вами методу protocols.CallService(account.ModuleName, '/GetInfo') ? Ее ведь в моем случае можно написать так protocols.CallService('Jabber', '/GetInfo') ? Но чтобы не делал этот метод, мы ему вроде как, не передаем информацию о контакте 1441?

В любом случае, при выполнении такого скрипта
local protocols = require('m_protocols')
local hContact = 1441
local account = protocols.GetAccount(hContact)
protocols.CallService(account.ModuleName, '/GetInfo')
Не вижу, в netlog.txt каких либо обращений к серверу.

Title: Re: MirLua
Post by: unsane on 17 06 2016, 08:20:23
donald, Да, protocols.CallService не передает контакт.

Добавил новый метод. Заработает в следующем ночнике.

Code: [Select]
local protocols = require('m_protocols')
protocols.CallSendChain(1441, '/GetInfo')
Title: Re: MirLua
Post by: donald on 17 06 2016, 12:51:43
unsane Спасибо. Еще вопрос, я не могу из lua выполнить
local user32 = require('c:\\windows\\system32\\user32.dll')
Выходит сообщение файл не найден.
Если дать команду
file = io.open ('c:\\windows\\system32\\user32.dll' , "r") - ошибки нет

Title: Re: MirLua
Post by: unsane on 17 06 2016, 13:27:26
Нужно в начале скрипта сделать так:
Code: [Select]
package.cpath = package.cpath .. ';c:\\windows\\system32\\?.dll'
а потом уже дергать require.
Но это не поможет, т.к. луа умеет загружать только те dll, в которых экспортирована специальная функция int luaopen_*(lua_State *L).
Title: Re: MirLua
Post by: donald on 22 06 2016, 06:02:12
Здравствуйте, перестал работать метод Message (возвращает nil)
local hHook = m.HookEvent("MirLua/RecvMessage", function(w, l)
    local ccd = CCSDATA(l)
ccd.Message
Случилось это, где-то после с 17 мая.
cdd.hContact - работает.
Title: Re: MirLua
Post by: unsane on 22 06 2016, 07:21:16
donald, а так?
Code: [Select]
local hHook = m.HookEvent("MirLua/RecvMessage", function(w, l)
    local ccd = CCSDATA(l)
    local pre = PROTORECVEVENT(ccd.lParam)
    print(pre.Message)
end
Title: Re: MirLua
Post by: donald on 22 06 2016, 12:37:05
unsane Так работает
Title: Re: MirLua
Post by: MisterMyth on 29 06 2016, 13:18:34
Как можно создать в Туллбаре кнопку "Открыть входящие". Такая есть в протокольном меню mail.ru. Хотелось бы вынести ее в Туллбар... Спасибо.
Title: Re: MirLua
Post by: unsane on 29 06 2016, 14:15:33
Code: [Select]
local mbb = require('m_msg_buttonsbar')
local icolib = require('m_icolib')

local moduleName = 'MyReceivedFiles'
local BBBF_ISIMBUTTON = 32
local BBBF_ISRSIDEBUTTON = 128
local bbButton =
{
  Module = moduleName,
  ButtonID = 1,
  Flags = BBBF_ISIMBUTTON | BBBF_ISRSIDEBUTTON,
  Tooltip = m.Translate('My received files'),
  Icon = icolib.AddIcon(moduleName, 'My received files')
}

mbb.AddButton(bbButton)

m.HookEvent("TabSRMM/ButtonsBar/ButtonPressed", function(w, l)
  bcd = CustomButtonClickData(l)
  if bcd.Module == moduleName and bcd.ButtonID == 1 then
    m.CallService('SRFile/OpenContRecDir', bcd.hContact, 0)
  end
end)

local script = {}

function script.Unload()
  mbb.RemoveButton(bbButton.Module, bbButton.ButtonID)
end

return script
Title: Re: MirLua
Post by: donald on 06 09 2016, 06:05:44
Здравствуйте, подскажите можно-ли из lua удалить из базы контакт полностью? Команда "db.DeleteModule(nil, 'test')" удаляет только модуль.
Title: Re: MirLua
Post by: Mikalair on 06 09 2016, 11:40:45

Code: [Select]
m.CallService("DB/Contact/Delete", hContact)
Title: Re: MirLua
Post by: DreamFlasher on 11 09 2016, 23:07:50
Hey, how do I retrieve the protocol in which a message is sent from in the following script:
Code: [Select]
message = require('m_message')
winapi = require('winapi')

m.HookEvent("MirLua/RecvMessage", function(w, l)
  local ccd = CCSDATA(l)
  if ccd.Message == 'stopword' then
    winapi.ShellExecute('command', 'file', 'args', 0)
    message.Send(ccd.hContact, ccd.Message)
    return 1;
  end
end)

Title: Re: MirLua
Post by: donald on 20 09 2016, 14:24:07
Здравствуйте, подскажите пожалуйста, можно ли в передать unicode строку функции, созданной в lua, у меня не получается.
Выводится пустая строка, вместо test

Code: [Select]
local winapi = require('winapi')
local hService = m.CreateServiceFunction('CreateFunctionSearch', function(w)
    winapi.MessageBox(_, w, 'Lua', 0, 10000)
    return
end)

result = m.CallService('CreateFunctionSearch', '[b]test[/b]')

 
Title: Re: MirLua
Post by: unsane on 20 09 2016, 19:04:39
donald, попробуй
Code: [Select]
u'[b]test[/b]'
Title: Re: MirLua
Post by: Mikalair on 21 09 2016, 11:01:44
unsane, не выйдет, wparam не кастится к строке.
Title: Re: MirLua
Post by: donald on 21 09 2016, 15:31:51
Не работает. Пока приходит в голову передать строку через базу данных
Title: Re: MirLua
Post by: unsane on 21 09 2016, 15:43:23
Да, не будет работать. Как выриант бд или глобальная переменная.
А в чем вообще суть эксперимента? может как-то по-другому можно?
Title: Re: MirLua
Post by: donald on 21 09 2016, 16:29:09
Да задача такая, из внешней программы показать список пользователей Миранда, по определенному фильтру. Единственно что я придумал, это вызвать службу QuickSearch_PLUGIN.
MimCmd.exe callservice  QuickSearch_PLUGIN/Show  stest d0, да только она не работает, и завешивает Миранду. Я подумал, что создам через lua службу, которая будет вызывать. QuickSearch_PLUGIN/Show
------------------------------------------
local hService = m.CreateServiceFunction('CreateFunctionSearch', function(w)
    result = m.CallService(QuickSearch_PLUGIN/Show,  w, 0)
    return
end)
-------------------------------------------
Через ж. это конечно.


Title: Re: MirLua
Post by: unsane on 24 09 2016, 23:19:24
donald, а вот в этом случае проблем со строкой не будет.
а не работает потому, что сервис вызывается слишком рано.
Code: [Select]
local hService = m.CreateServiceFunction('CreateFunctionSearch', function(w)
    result = m.CallService('QuickSearch_PLUGIN/Show', w)
    return
end)

m.HookEvent('Miranda/System/ModulesLoaded', function()
  m.CallService('CreateFunctionSearch', u'[b]test[/b]')
end)

Title: Odp: MirLua
Post by: kasim on 29 09 2016, 14:36:10
Здравствуйте!
В связи с проблемами кодировки кириллицы в плагине Command Line (команда message), хотелось бы узнать возможно ли, используя MirLua, из стороннего приложения отправить сообщение контакту?

Ещё вопрос: где взять описание модуля winapi?
Title: Re: MirLua
Post by: unsane on 29 09 2016, 19:19:39
kasim, В данный момент нет возможности взаимодействовать с MirLua извне.
Описания winapi нет, но есть список функций (http://trac.miranda-ng.org/browser/trunk/plugins/MirLua/Modules/WinAPI/src/winapi.cpp#L1892) + я могу подсказать по параметрам интересующих функций.
Title: Re: MirLua
Post by: kasim on 30 09 2016, 08:33:48
unsane, спасибо, по вашей ссылке смог разобраться с параметрами функции CreateProcess, но не понял как получить структуру pi (PROCESS_INFORMATION) для дальнейшего использования (закрытия хендла).
CreateProcess использую так:
Code: [Select]
local NORMAL_PRIORITY_CLASS = 0x20
local STARTF_USESHOWWINDOW = 0x1
local si =

   dwFlags = STARTF_USESHOWWINDOW,
   wShowWindow = 0
}
si.wShowWindow = 1
local r = winapi.CreateProcess(nil, 'cmd.exe /k', nil, nil, 0, NORMAL_PRIORITY_CLASS, si, '')
--winapi.CloseHandle (pi.hThread)

А скажите стоит ли в дальнейшем ожидать "возможности взаимодействовать с MirLua извне" и как я смогу узнать о появлении такой возможности?

P.S. я ранее с Lua знаком не был. Сейчас только пытаюсь разобраться для своих задач. Возможно поэтому сложно понять как функционирует плагин, и как использовать те или иные его возможности.
Title: Re: MirLua
Post by: kasim on 30 09 2016, 09:16:15
 :( Похоже рано я решил, что разобрался с CreateProcess - никакого процесса она у меня не создаёт.
Уважаемый unsane, подскажите что не так.
Title: Re: MirLua
Post by: unsane on 30 09 2016, 18:48:41
Проблема в последнем параметре:
Code: [Select]
winapi.CreateProcess(nil, 'cmd.exe /k', nil, nil, 0, 0, si, nil)
Функция CreateProcess возвращает 5 параметров:
Code: [Select]
local r, hProcess, hThread, dwProcessId, dwThreadId = winapi.CreateProcess(nil, 'cmd.exe /k', nil, nil, 0, 0, si, nil)
if r > 0 then
  --...
  winapi.CloseHandle(hProcess)
  winapi.CloseHandle(hThread)
end

Насчет взаимодействия, я пока не вижу вариантов как это можно сделать.
Title: Re: MirLua
Post by: Mikalair on 01 10 2016, 16:08:36
Насчет взаимодействия, я пока не вижу вариантов как это можно сделать.
Я думаю, можно сделать небольшую обертку над Named Pipes.
Title: Re: MirLua
Post by: kasim on 02 10 2016, 08:08:55
local r, hProcess, hThread, dwProcessId, dwThreadId = winapi.CreateProcess(nil, 'cmd.exe /k', nil, nil, 0, 0, si, nil)
Гениально :THUMBS UP:, я забыл о возможности присваивания списком в Lua, а я ему структуру совал: получил ошибку "таблице присваивается число".
Проверить смогу только завтра.

На счёт взаимодействия извне:
Конечно, не знаю, на сколько это реализуемо в плагине, но я хотел предложить взаимодействие через сокет по любому протоколу (TCP, UDP) и обрабатывать событие получения данных.
Также поддерживаю вариант, предложенный Mikalair с именованными каналами.
Title: Re: MirLua
Post by: kasim on 03 10 2016, 14:51:23
Теперь CreateProcess работает.
Title: Re: MirLua
Post by: donald on 11 10 2016, 09:45:46
Здравствуйте, скажите, можно ли через lua сделать две функции:
1. Открыть все непрочитанные сообщения.
Причина в следующем: после перезагрузки Миранды, она только мигает в трее, что есть непрочитанные сообщения, и приходится щелкать на иконку, до тех пор пока не откроешь все непрочитанные.
2. Пометить все непрочитанные сообщения как прочитанные.
Причина в следующем: после длительного перерыва (например отпуска), висит много новых сообщений, которые нет смысла уже читать.
Title: Re: MirLua
Post by: unsane on 13 10 2016, 19:35:12
donald, на вскидку как-то так:
Code: [Select]
local db = require('m_database')
local message = require('m_message')

m.CreateServiceFunction('Lua/OpenContactWindow', function(w, l)
  for hContact in db.Contacts() do
    local hDbEvent = db.GetFirstUnreadEvent(hContact)
    if hDbEvent > 0 then
      message.Send(hContact, m.NULL)
    end
  end
end)

m.CreateServiceFunction('Lua/ReadContactEvents', function(w, l)
  for hContact in db.Contacts() do
    for hDbEvent in db.UnreadEvents(hContact) do
      db.MarkReadEvent(hDbEvent)
    end
  end
end)
Title: Re: MirLua
Post by: donald on 14 10 2016, 14:54:15
Спасибо, получилось, только пришлось немного поменять.
--      message.Send(hContact, m.NULL)
    m.CallService('SRMsg/SendCommand', hContact)
Поскольку вываливалась ошибка на параметр m.NULL . Пришлось взять сторонний сервис. Мне нужно, чтоб открывалось окно контакта, а message.Send, если задавать во втором операнде текст, сразу отправляет сообщение. Может можно как-то иначе?
И
--      db.MarkReadEvent(hDbEvent)
      db.MarkReadEvent(hContact, hDbEvent)


Code: [Select]
local db = require('m_database')
local message = require('m_message')

m.CreateServiceFunction('Lua/OpenContactWindow', function(w, l)
  for hContact in db.Contacts() do
    local hDbEvent = db.GetFirstUnreadEvent(hContact)
    if hDbEvent > 0 then
--     message.Send(hContact, m.NULL)
  m.CallService('SRMsg/SendCommand', hContact)
    end
  end
end)

m.CreateServiceFunction('Lua/ReadContactEvents', function(w, l)
  for hContact in db.Contacts() do
    for hDbEvent in db.UnreadEvents(hContact) do
--     db.MarkReadEvent(hDbEvent)
      db.MarkReadEvent(hContact, hDbEvent)
    end
  end
end)
Title: Re: MirLua
Post by: unsane on 15 10 2016, 20:26:01
donald, m.CallService('SRMsg/SendCommand', hContact) - это не сторонний сервис. если бы я это реализовывал, то вызывал бы именно его. Есть ли смысл делать обертку на него в луа?
Title: Re: MirLua
Post by: zevnull on 29 08 2017, 18:15:23
Приветствую всех, у меня есть задача, предоставить упрощенный интерфейс создания чат комнаты для пользователей. Хочется добавить кнопку на основную панель, по нажатию на которую отрисуется интерфейс по созданию чат комнаты, где автоматически будет использоваться сервер конференций в формате conference.domain.com, где domain.com - эта та часть, что возьмется от login@domain.com. Таким образом пользователю останется ввести только название для чат комнаты. И еще момент, есть потребность принимать дефолтные настройки чат комнаты сразу по ее созданию.

Я буду крайне признателен, если уважаемый автор данного плагина MirLua, подскажет мне куда копать, для решение моей задачи! Я ни коим образом не прошу решить ее за меня, прошу лишь направить.
Title: Re: MirLua
Post by: unsane on 31 08 2017, 20:06:38
zevnull,
"в первом приближении это выглядит так"
Code: [Select]
local ttb = require('m_toptoolbar')
local icolib = require('m_icolib')

m.HookEvent('TopToolBar/ModuleLoaded', function ()
    ttb.AddButton({
        Name = 'Join chat',
        Service = 'JABBER/*/Groupchat',
        lParamDown = topointer(u'room_name@conference.jabber.ru'),
        Icon = icolib.AddIcon('joinChat', 'Join chat')
    })
end)

Проблемы:

upd
сделал фикс для Jabber'a со следующего ночника можно будет передать параметр для заполнения полей:
Code: [Select]
local ttb = require('m_toptoolbar')
local icolib = require('m_icolib')

m.HookEvent('TopToolBar/ModuleLoaded', function ()
    ttb.AddButton({
        Name = 'Join chat',
        Service = 'JABBER/*/Groupchat',
        lParamDown = topointer(u'room_name@conference.jabber.ru'),
        Icon = icolib.AddIcon('joinChat', 'Join chat')
    })
end)
Title: Re: MirLua
Post by: Oneiron on 12 09 2017, 12:02:38
Здравствуйте. Пытаюсь запустить код
Code: [Select]
local message = require("m_message")
local winapi = require("winapi")

m.HookEvent("MirLua/RecvMessage", function(w, l)
  local ccd = CCSDATA(l)
  if ccd.Message == 'stopword' then
    winapi.ShellExecute('cmd.exe', 'file', 'args', 0)
    message.Send(ccd.hContact, ccd.Message)
    return 1;
  end
end)
При отправке сообщений выскакивает ошибка - attempt to call a nil value (global 'CCSDATA'), больше ничего не происходит.
Так же хотел бы узнать - как можно ограничить выполнение скрипта так, чтобы он выполнялся только при получении сообщения от конкретного отправителя?
Title: Re: MirLua
Post by: unsane on 12 09 2017, 18:38:01
Oneiron,
Code: [Select]
local db = require("m_database")
local message = require("m_message")
local winapi = require("winapi")

m.HookEvent("MirLua/RecvMessage", function(w, l)
  local ccd = CCSDATA.new(l)
  if db.GetContactInfo(ccd.hContact, 'Uid') == '<uid_of_contact>' and ccd.Message == '<stopword>' then
    winapi.ShellExecute('cmd.exe', 'file', 'args', 0)
    message.Send(ccd.hContact, ccd.Message)
    print(111)
    return 1;
  end
end)
Title: Re: MirLua
Post by: Oneiron on 13 09 2017, 08:57:44
Теперь - attempt to index a nil value (global 'CCSDATA')
Title: Re: MirLua
Post by: unsane on 13 09 2017, 10:32:22
хм. можно попробовать добавить
Code: [Select]
require('m_protocols') в начало.
Title: Re: MirLua
Post by: Oneiron on 13 09 2017, 11:03:15
Добавил. Ошибок при отправке больше не выскакивает, но и не работает. Дебаг в консольке в виде:
Code: [Select]
  local ccd = CCSDATA.new(l)
  print(ccd.Message)
Показывает, что внутри ccd.Message всегда "nil", независимо от того что я отправляю.
Title: Re: MirLua
Post by: Oneiron on 13 09 2017, 15:06:09
В итоге заработал такой вариант:

Code: [Select]
local protocols = require('m_protocols')
local db = require("m_database")
local message = require("m_message")
local winapi = require("winapi")

m.HookEvent("MirLua/RecvMessage", function(w, l)
  local ccd = CCSDATA.new(l)
  local pre = PROTORECVEVENT(ccd.lParam)
  if pre.Message == "stopword" then
    winapi.CreateProcess(nil, 'cmd.exe /k', nil, nil, 0, 0, si, nil)
    message.Send(ccd.hContact, 'Принято!')
    return 1;
  end
end)
Title: Re: MirLua
Post by: unsane on 13 09 2017, 20:19:38
Oneiron, да, все правильно.


p.s. сделал фикс (в ночнике), чтобы работало
Code: [Select]
local ccd = CCSDATA(l)
Title: Re: MirLua
Post by: unsane on 23 09 2017, 16:11:26
подскажите, с помощью какой настройки, ключа, плагина можно принудительно переводить миранду по всем(выбранным) протоколам в онлайн при запуске?

Перевести все протоколы в онлайн:
Code: [Select]
local protos = require('m_protocols')

local ID_STATUS_OFFLINE = 40071
local ID_STATUS_ONLINE = 40072

m.HookEvent('Miranda/System/ModulesLoaded', function()
  for acc in protos.Accounts() do
    if acc.IsEnabled and not acc.IsVirtual then
      local status = acc:CallService('/GetStatus')
      if (status == ID_STATUS_OFFLINE) then
        acc:CallService('/SetStatus', ID_STATUS_ONLINE)
      end
    end
  end
end)
Title: Re: MirLua
Post by: Gynaecologist on 27 09 2017, 14:44:30
Здравствуйте, можно ли скрыть от пользователя  или сделать "Read Only" отдельные элементы окна настроек?
например, сделать так, чтобы не было видно раздела idle:
Spoiler
(http://i89.fastpic.ru/big/2017/0927/12/7a4b4fb398ba859b4c6b8b9a22a62a12.png)
Title: Re: MirLua
Post by: unsane on 29 09 2017, 19:33:13
Gynaecologist, скорее всего нет.
Title: Re: MirLua
Post by: Oneiron on 21 10 2017, 18:41:45
А в MirLua есть какая-нибудь встроенная функция ожидания?
Title: Re: MirLua
Post by: unsane on 22 10 2017, 17:36:44
смотря что нужно. Можно попробовать модуль m_schedule.
Code: [Select]
local schedule = require('m_schedule')

local wait_period_in_secons = 5
local time = os.time() + wait_period_in_secons
schedule.At(time).Do(function()
   -- код здесь вызовется через 5 секунд
end)
Title: Re: MirLua
Post by: Oneiron on 24 10 2017, 14:18:45
Последовательно подключать аккаунты, но если при этом использовать
Code: [Select]
local clock = os.clock
function sleep(n)  -- seconds
  local t0 = clock()
  while clock() - t0 <= n do end
end
То миранда остается недоступной (не показывая ни значков, ни главного окна, ни всплывающих окон) до тех пор, пока все протоколы не загрузятся.
Title: Re: MirLua
Post by: unsane on 24 10 2017, 18:47:56
Я не очень понял.  ::)

Если нужно запускать по одному протоколу через какой-то промежуток, то:
Spoiler
Code: [Select]
local protos = require('m_protocols')
local schedule = require('m_schedule')

local ID_STATUS_OFFLINE = 40071
local ID_STATUS_ONLINE = 40072

m.HookEvent('Miranda/System/ModulesLoaded', function()
    local accounts = {}
    for account in protos.Accounts() do
        if account.IsEnabled and not account.IsVirtual then
          local status = account:CallService('/GetStatus')
          if (status == ID_STATUS_OFFLINE) then
            accounts[#accounts + 1] = account
          end
        end
    end
    local i = 1
    schedule.Every(5).Seconds().Do(function()
        local account = accounts[i]
        print(account.AccountName)
        if account == nil then
            return schedule.STOP
        end
        account:CallService('/SetStatus', ID_STATUS_ONLINE)
        i = i + 1
    end)
end)


Если нужно запустить все через какое-то время, то:
Code: [Select]
m.ForkThread(function()
    sleep(5)
    -- перевести протоколы в онлайн
end)

Или дождаться следующего ночника и там будет:
Code: [Select]
local schedule = require('m_schedule')

schedule.Wait(5).Seconds().Do(function()
-- перевести протоколы в онлайн
end)
Title: Re: MirLua
Post by: Oneiron on 25 10 2017, 22:48:33
Да, по одному через промежуток времени, код под спойлером подошел идеально :)
У меня просто 14 разных протоколов подключены, и если запускать их все сразу, то миранда виснет в 2х случаях из 3х.
Title: Re: MirLua
Post by: Oneiron on 27 09 2018, 18:33:45
Можно ли средствами MirLUA разрезать набранное сообщение на равные "кусочки" и отправить их с задержкой в две секунды? Некий аналог функции TabSRMM "разделять длинные сообщения", но, так сказать, вручную :)
Title: Re: MirLua
Post by: unsane on 27 09 2018, 21:33:16
В данный момент нет. Надо сделать эвент, на который можно будет подписаться и фильтровать отправляемые сообщения. А оттуда уже управлять отправкой.
Попробую запилить на выходных.
Title: Re: MirLua
Post by: Oneiron on 28 09 2018, 19:38:05
Замечательно, большое вам спасибо :)
Кнопки же создавать при помощи MirLUA можно? Встраиваемые в Scriver?
Title: Re: MirLua
Post by: unsane on 01 10 2018, 21:55:50
Охх. Задачка оказалась нетривиальной. Недостающее в луа добавил.
Скрипт пока такой:
Code: [Select]
local proto = require('m_protocols')
local schedule = require('m_schedule')

local LIMIT = 10
local WAIT = 2

local function split(str, limit)
    local pos = 1
    return function()
        local res = str:sub(pos, pos + limit - 1)
        if #res > 0 then
            pos = pos + #res
            return res
        end
    end
end

m.HookEvent("MirLua/SendMsg", function(w, l)
    local ccs = CCSDATA(l);

    if #ccs.Message <= LIMIT then
        return 0
    end

    local n = 1
    local first = true
    local service = ccs.Service
    local hContact = ccs.hContact
    local wParam = ccs.wParam
    local message = ccs.Message

    for msg in split(message, LIMIT) do
        if first then
            proto.CallSendChain(hContact, service, wParam, msg)
            first = false
        else
            schedule.Wait(WAIT * n).Seconds().Do(function()
                proto.CallSendChain(hContact, service, wParam, msg)
            end)
            n = n + 1
        end
    end

    local hMessage = 100500
    local account = proto.GetAccount(hContact)
    local moduleName = account.ModuleName
    schedule.Wait(WAIT * n + 1).Seconds().Do(function()
        proto.BroadcastAck(moduleName, hContact, 0, 0, topointer(hMessage))
    end)

    return hMessage
end)

Должен стартануть уже в следующем ночнике.

Кнопки можно добавлять в скривер так же как и для tabSRMM. Код сейчас унифицирован для всех модулей.
Title: Re: MirLua
Post by: Oneiron on 02 10 2018, 07:42:10
Спасибо большое! Завтра проверю :)
Title: Re: MirLua
Post by: Oneiron on 07 10 2018, 14:27:03
Здравствуйте! Спасибо большое, скрипт работает замечательно! :)

Хотел уточнить. Мне нужно сделать две кнопки на панель, одна будет отправлять вставленный текст кусками по 1000 символов, а другая - по 4000 символов, в то время как базовая функция отправки будет работать как и раньше.
Попытался создать кнопку, как написано в примере на первой странице (программировать я не умею, поэтому только собираю из примеров :( ), но он выдает ошибку "attempt to call a nil value (field 'OnMsgToolBarButtonPressed'). Как я понимаю, способ вызова изменился :(
Title: Re: MirLua
Post by: unsane on 16 10 2018, 21:51:28
Извиняюсь за долгий ответ, пришлось изрядно покопаться в требухах и немного допилить:
Code: [Select]
local schedule = require('m_schedule')
local srmm = require('m_srmm')
local msgs  = require('m_message')
local icolib = require('m_icolib')
local winapi  = require('winapi')

local WAIT = 2
local IDC_MESSAGE = 3012

local function split(str, limit)
    local pos = 1
    return function()
        local res = str:sub(pos, pos + limit - 1)
        if #res > 0 then
            pos = pos + #res
            return res
        end
    end
end

function get_message_area(hwnd)
    local hEdit = winapi.GetDlgItem(hwnd, IDC_MESSAGE)
    if (hEdit == nil) then
        error("unable to find message area")
    end
    return hEdit
end

function get_log_message(hwnd)
    local hEdit = get_message_area(hwnd)
    return winapi.GetWindowText(hEdit);
end

function clear_log_message(hwnd)
    local hEdit = get_message_area(hwnd)
    winapi.SetWindowText(hEdit, '');
end

function send_message_by_parts(hContact, message, limit)
    if #message <= limit then
        msgs.Send(hContact, message)
        return
    end

    local n = 1
    local first = true
    for msg in split(message, limit) do
        if first then
            msgs.Send(hContact, msg)
            first = false
        else
            schedule.Wait(WAIT * n).Seconds().Do(function()
                msgs.Send(hContact, msg)
            end)
            n = n + 1
        end
    end
end

local module = 'sendInParts'
local BBBF_ISCHATBUTTON = 16
local BBBF_ISIMBUTTON = 32
local BBBF_ISRSIDEBUTTON = 128

srmm.AddButton{
    Module = module,
    ButtonId = 1000,
    Flags = BBBF_ISCHATBUTTON | BBBF_ISIMBUTTON | BBBF_ISRSIDEBUTTON,
    Tooltip = m.Translate('Send in parts of 1000 characters'),
    Icon = icolib.AddIcon(module, 'Send in parts of 1000 characters')
}

srmm.AddButton{
    Module = module,
    ButtonId = 4000,
    Flags = BBBF_ISCHATBUTTON | BBBF_ISIMBUTTON | BBBF_ISRSIDEBUTTON,
    Tooltip = m.Translate('Send in parts of 4000 characters'),
    Icon = icolib.AddIcon(module, 'Send in parts of 4000 characters')
}

m.HookEvent("SRMM/ButtonsBar/ButtonPressed", function(w, l)
    local bcd = CustomButtonClickData(l)
    if bcd.Module ~= module then
        return;
    end
    local message = get_log_message(bcd.hWnd)
    send_message_by_parts(bcd.hContact, message, bcd.ButtonId)
    clear_log_message(bcd.hWnd)
end)
Title: Re: MirLua
Post by: Oneiron on 17 10 2018, 17:09:27
Вау... просто вау. Огромное вам спасибо! :)

UPD: Не работает на больших текстах. Маленькие кусочки отправляет без проблем, при попытке отправить сообщение размеров в 20000 символов миранда молча крашится.
Title: Re: MirLua
Post by: unsane on 17 10 2018, 19:32:36
Крешлог есть? если нет, я на выходных проверю на большом тексте
Title: Re: MirLua
Post by: Oneiron on 17 10 2018, 21:08:59
Нет. Вылетает даже не создав крэшлога.
Miranda 32-bit, высылается с одного jabber-аккаунта на другой через TabSRMM.
Title: Re: MirLua
Post by: Oneiron on 04 01 2019, 19:30:49
        local res = str:sub(pos, pos + limit - 1)
Предположительно, проблема здесь. Вылетает при попытке обработать сообщение длиной более 2048 символов. В тех случаях когда надо их нарезать ломтиками - они гораздо больше. Доходит до десятков тысяч.


Вторая найденная проблема -
Spoiler
Miranda обычно шлет все сообщения в юникоде, а str:sub, видимо, работать с ним не умеет. Предполагаю я это, поскольку из такого вот тестового сообщения:

Spoiler
Интеpнет, как и смеpть, забиpает лyчших!
В России две беды — дypаки и коммyтиpyемые линии связи.
Сделал дело — пеpезагpyзись смело!
Кpаткость-сестpа dial-up'a.
Hикого pабота пpогpаммы не yдивляет так часто, как ее создателя!
Плохомy пpогpаммеpy дpайвеpы мешают!
Модем на 14400 наyчил меня теpпению.
Монохpомная тельняшка с последовательным двоичным пеpебоpом.
Коллекциям рефератов посвящается: IР есть — IQ не надо.
Каждый Windows-программист — хитрый садомазохист!
Интеpнет, как и смеpть, забиpает лyчших!
В России две беды — дypаки и коммyтиpyемые линии связи.
Сделал дело — пеpезагpyзись смело!
Кpаткость-сестpа dial-up'a.
Hикого pабота пpогpаммы не yдивляет так часто, как ее создателя!
Плохомy пpогpаммеpy дpайвеpы мешают!
Модем на 14400 наyчил меня теpпению.
Монохpомная тельняшка с последовательным двоичным пеpебоpом.
Коллекциям рефератов посвящается: IР есть — IQ не надо.
Каждый Windows-программист — хитрый садомазохист!Интеpнет, как и смеpть, забиpает лyчших!
В России две беды — дypаки и коммyтиpyемые линии связи.
Сделал дело — пеpезагpyзись смело!
Кpаткость-сестpа dial-up'a.
Hикого pабота пpогpаммы не yдивляет так часто, как ее создателя!
Плохомy пpогpаммеpy дpайвеpы мешают!
Модем на 14400 наyчил меня теpпению.
Монохpомная тельняшка с последовательным двоичным пеpебоpом.
Коллекциям рефератов посвящается: IР есть — IQ не надо.
Каждый Windows-программист — хитрый садомазохист!
Каждый Windows-программист — хитрый садомазохист!

Получателю приходит только

Spoiler
еля!
Плохомy пpогpаммеpy дpайвеpы мешают!
Модем на 14400 наyчил меня теpпению.
Монохpомная тельняшка с последовательным двоичным пеpебоpом.
Коллекциям рефератов посвящается: IР есть — IQ не надо.
Каждый Windows-программист — хитрый садомазохист!
Каждый Windows-программист — хитрый садомазохист!

А на стороне отправителя в историю падают вот такие штуки (на другую сторону они не отправляются)

Spoiler
Интеpнет, как и смеpть, забиpает лyчших!
В России две беды — дypаки и коммyтиpyемые линии связи.
Сделал дело — пеpезагpyзись смело!
Кpаткость-сестpа dial-up'a.
Hикого pабота пpогpаммы не yдивляет так часто, как ее создателя!
Плохомy пpогpаммеpy дpайвеpы мешают!
Модем на 14400 наyчил меня теpпению.
Монохpомная тельняшка с последовательным двоичным пеpебоpом.
Коллекциям рефератов посвящается: IР есть — IQ не надо.
Каждый Windows-программист — хитрый садомазохист!
Интеpнет, как и смеpть, забиpает лyчших!
В России две беды — дypаки и коммyтиpyемые линии связи.
Сделал делР

Решил. Дело было в том, что str:sub работает с байтовым представлением строки, а не с символьным.  После того как я сделал так:
Code: [Select]
local res = str:sub(pos, utf8.offset(str,pos + limit)) в функции split, кириллические строки начали отправляться адекватно.

Проблема вылета при работе со строками более 2048 символов остается. Это ограничение LUA?