1

Тема: А хотите 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

2 (2023-02-21 09:45:27 отредактировано swerg)

Re: А хотите lua консольку в quik?

Прикольный трюк!
https://smailik.top/gif/funi01018.gif