Winapi 有效地使用io.popen,或其替代解决方案
我不确定是否有更有效的方法来实现这一点,尽管有人曾表示他们使用Win32 API而不是io.popen。问题是,我似乎缺乏将WinAPI整合到任何东西中的技能,尽管如果我能找到关于makefile(或我需要做的任何事情)的详细、分步说明并使其工作,我很乐意使用它。但在此之前,这是手头的任务 我目前正在使用io.popen在我使用的程序中返回ping结果。问题是,它会弹出cmd框,虽然它只是简单地这么做,但这很烦人。这就是我的代码:Winapi 有效地使用io.popen,或其替代解决方案,winapi,lua,Winapi,Lua,我不确定是否有更有效的方法来实现这一点,尽管有人曾表示他们使用Win32 API而不是io.popen。问题是,我似乎缺乏将WinAPI整合到任何东西中的技能,尽管如果我能找到关于makefile(或我需要做的任何事情)的详细、分步说明并使其工作,我很乐意使用它。但在此之前,这是手头的任务 我目前正在使用io.popen在我使用的程序中返回ping结果。问题是,它会弹出cmd框,虽然它只是简单地这么做,但这很烦人。这就是我的代码: pinghandle = io.popen("ping "..z
pinghandle = io.popen("ping "..zs.params(2))
pingresult = pinghandle:read("*a")
pingmin = string.match(pingresult,"Minimum = (%d+ms)")
pingmax = string.match(pingresult, "Maximum = (%d+ms)")
pingavg = string.match(pingresult, "Average = (%d+ms)")
pinghandle:close()
if pingmin and pingmax and pingavg then
send(zs.param(1),"@r{@x111Ping to @w"..zs.params(2).." @x111Min: @w"..pingmin.." @x111Avg: @w"..pingavg.." @x111Max: @w"..pingmax.."@r}@w")
else
send(zs.param(1),"@x111Unsuccessful ping to@w",zs.params(2))
end
不要注意
zs.param(#)
。这是特定于客户的,与代码无关。我的问题是。。。有没有一种“看不见的”方法可以达到同样的效果?除此之外,这是否能像我编写代码那样有效?有各种外部库可以让您这样做
签出,或有各种外部库可供您执行此操作
退房,或者是您的选择吗?如果是这样的话,FFI对于这类事情来说是非常方便的。可能是这样,但我的问题往往是我不知道如何编译源文件。在过去,我曾尝试使用makefile,但我想我只是缺少一些东西,我感到沮丧,因为我似乎永远无法让它工作。**编辑:我想我已经弄明白了,一旦我确定会更新。这似乎是我可以处理的事情。谢谢我会更深入地研究它,看看我将来是否需要帮助!关于
os.execute
?@Josh:makefile适用于需要编译大量相互依赖的内容,并且如果其中一个文件被更新,您希望避免重新编译所有内容的情况。不管怎样,编译东西并没有那么难,即使你遇到了麻烦,也会有堆垛溢出!这是你的选择吗?如果是这样的话,FFI对于这类事情来说是非常方便的。可能是这样,但我的问题往往是我不知道如何编译源文件。在过去,我曾尝试使用makefile,但我想我只是缺少一些东西,我感到沮丧,因为我似乎永远无法让它工作。**编辑:我想我已经弄明白了,一旦我确定会更新。这似乎是我可以处理的事情。谢谢我会更深入地研究它,看看我将来是否需要帮助!关于os.execute
?@Josh:makefile适用于需要编译大量相互依赖的内容,并且如果其中一个文件被更新,您希望避免重新编译所有内容的情况。不管怎样,编译东西并没有那么难,即使你遇到了麻烦,也会有堆垛溢出!问题是,我似乎不知道如何安装winapi。我没有luam命令,这似乎出于某种原因是必要的,而且似乎没有任何安装指南。我得看看另外两个,看看能从中学到什么?这是什么东西?下载winapi@或二进制文件(有不同的二进制文件,取决于您的lua运行时)对,当我使用您的第二个链接生成文件时,它会尝试执行luam命令。看看第一个链接,它似乎就是从那里来的。那我现在就去试试。谢谢问题是,我似乎不知道如何安装winapi。我没有luam命令,这似乎出于某种原因是必要的,而且似乎没有任何安装指南。我得看看另外两个,看看能从中学到什么?这是什么东西?下载winapi@或二进制文件(有不同的二进制文件,取决于您的lua运行时)对,当我使用您的第二个链接生成文件时,它会尝试执行luam命令。看看第一个链接,它似乎就是从那里来的。那我现在就去试试。谢谢