Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 有效地使用io.popen,或其替代解决方案_Winapi_Lua - Fatal编程技术网

Winapi 有效地使用io.popen,或其替代解决方案

Winapi 有效地使用io.popen,或其替代解决方案,winapi,lua,Winapi,Lua,我不确定是否有更有效的方法来实现这一点,尽管有人曾表示他们使用Win32 API而不是io.popen。问题是,我似乎缺乏将WinAPI整合到任何东西中的技能,尽管如果我能找到关于makefile(或我需要做的任何事情)的详细、分步说明并使其工作,我很乐意使用它。但在此之前,这是手头的任务 我目前正在使用io.popen在我使用的程序中返回ping结果。问题是,它会弹出cmd框,虽然它只是简单地这么做,但这很烦人。这就是我的代码: pinghandle = io.popen("ping "..z

我不确定是否有更有效的方法来实现这一点,尽管有人曾表示他们使用Win32 API而不是io.popen。问题是,我似乎缺乏将WinAPI整合到任何东西中的技能,尽管如果我能找到关于makefile(或我需要做的任何事情)的详细、分步说明并使其工作,我很乐意使用它。但在此之前,这是手头的任务

我目前正在使用io.popen在我使用的程序中返回ping结果。问题是,它会弹出cmd框,虽然它只是简单地这么做,但这很烦人。这就是我的代码:

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命令。看看第一个链接,它似乎就是从那里来的。那我现在就去试试。谢谢