<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[QUIK -> DDE &mdash; А хотите lua консольку в quik?]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=431</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=431&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «А хотите lua консольку в quik?».]]></description>
		<lastBuildDate>Tue, 21 Feb 2023 05:44:55 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: А хотите lua консольку в quik?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4141#p4141</link>
			<description><![CDATA[<p>Прикольный трюк! <br /><span class="postimg"><img src="https://smailik.top/gif/funi01018.gif" alt="https://smailik.top/gif/funi01018.gif" /></span></p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Tue, 21 Feb 2023 05:44:55 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4141#p4141</guid>
		</item>
		<item>
			<title><![CDATA[А хотите lua консольку в quik?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4140#p4140</link>
			<description><![CDATA[<div class="codebox"><pre><code>-- нельзя конечно взять и вызвать произвольную функцию из dll, функция должна соответствовать типу lua_CFunction
-- но в частном случае, когда функция без аргументов и возвращает bool, это работает
package.loadlib(&#039;kernel32.dll&#039;,&#039;AllocConsole&#039;)(true)

-- подключим потоки ввода-выовода к консольке
io.output(&#039;CONOUT$&#039;)
io.input(&#039;CONIN$&#039;)

-- все, теперь можно читать из io.input и писать в io.output. print() почему-то не работает, но при желании его можно переопределить

function main()
 io.write(&#039;&gt; &#039;)
 io.flush()

 l = io.read(&#039;l&#039;)
 while l do
 -- можно выполнять команды как-то примерно так:
  f,e = load(l)
  if f then
    s,r = pcall(f)
    if not s then
      io.write(&quot;Error call: &quot;);
    end
    io.write(r == nil and &#039;&#039; or tostring(r),&#039;\n&#039;)
  else
    io.write(&quot;Error load: &quot;, e, &quot;\n&quot;);
  end
  io.write(&#039;&gt; &#039;)
  io.flush()
  l = io.read(&#039;l&#039;)
 -- чтобы выйти, надо нажать Ctrl-Z и Enter
 end
 
 -- почистим за собой и закроем консольку
 -- закрывать консольное окошко крестиком в правом верхнем углу нельзя - квик помрет
 io.close(io.output()) 
 io.close(io.input()) 
 package.loadlib(&#039;kernel32.dll&#039;,&#039;FreeConsole&#039;)(true)
end</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (barlone)]]></author>
			<pubDate>Tue, 21 Feb 2023 05:26:39 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4140#p4140</guid>
		</item>
	</channel>
</rss>
