I download wxLua-2.8.12.3-Lua-5.2.2-MSW-Unicode.zip and wrote the following
code for testing wxExecute function. But the results of "streamin:Read"
function are always empty.
I have tried the exec example contained in wxWidgets' source code. And I could
see the redirected output with this command "cmd /k tree d: & exit".
If I replace the command "cmd /k tree d: & exit" with "attrib", I could get the
desired result. What's the problem with the following code?
-
package.cpath =
package.cpath..";./?.dll;./?.so;../lib/?.so;../lib/vc_dll/?.dll;"
require("wx")
frame = wx.wxFrame( wx.NULL, wx.wxID_ANY,"wxLua Demo", wx.wxDefaultPosition,
wx.wxSize(600,480), wx.wxDEFAULT_FRAME_STYLE )
console = wxstc.wxStyledTextCtrl(frame, wx.wxID_ANY)
console:Show(true)function Output(message)
console:AppendText(message)
console:GotoPos(console:GetLength())endlocal proc, streamin
function ReadIt(event)if streamin and streamin:CanRead()then
Output("Can Read\n")local str = streamin:Read(4096)
print(str)
Output(str .."\n")else
Output("No Output\n")endendlocal myTimer = wx.wxTimer(frame)
frame:Connect(wx.wxEVT_TIMER, ReadIt)function Execute()
proc = wx.wxProcess()
proc:Redirect()
proc:Connect(wx.wxEVT_END_PROCESS,function(event)
myTimer:Stop();
Output("Process Ended\n")
ReadIt()
proc =nilend)local cmd ="cmd /k tree d: & exit"
Output("Running program: ".. cmd .."\n")local pid = wx.wxExecute(cmd,
wx.wxEXEC_ASYNC, proc)
Output("Pid is ".. pid .."\n")
streamin = proc and proc:GetInputStream()
myTimer:Start(500);end
frame:Show(true)
Execute()
wx.wxGetApp():MainLoop()
--
___
wxlua-users mailing list
wxlua-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wxlua-users