Тема: А хотите lua консольку в quik?
-- нельзя конечно взять и вызвать произвольную функцию из dll, функция должна соответствовать типу lua_CFunction
-- но в частном случае, когда функция без аргументов и возвращает bool, это работает
package.loadlib('kernel32.dll','AllocConsole')(true)
-- подключим потоки ввода-выовода к консольке
io.output('CONOUT$')
io.input('CONIN$')
-- все, теперь можно читать из io.input и писать в io.output. print() почему-то не работает, но при желании его можно переопределить
function main()
io.write('> ')
io.flush()
l = io.read('l')
while l do
-- можно выполнять команды как-то примерно так:
f,e = load(l)
if f then
s,r = pcall(f)
if not s then
io.write("Error call: ");
end
io.write(r == nil and '' or tostring(r),'\n')
else
io.write("Error load: ", e, "\n");
end
io.write('> ')
io.flush()
l = io.read('l')
-- чтобы выйти, надо нажать Ctrl-Z и Enter
end
-- почистим за собой и закроем консольку
-- закрывать консольное окошко крестиком в правом верхнем углу нельзя - квик помрет
io.close(io.output())
io.close(io.input())
package.loadlib('kernel32.dll','FreeConsole')(true)
end