在Windows上隐藏curl窗口

上一个问题的答案之一提到,我可以使用curl来获取url; 这可以在Thread.newProcess.spawn 。 但似乎无论在哪种情况下,在Windows上,当curl传出到networking时,我都会看到一个小的命令提示符窗口

我像这样调用curl:

 `curl "#{url}"` 

有没有办法隐藏窗口,使其不会出现? 它不仅从游戏中获得了焦点(冻结它),但是如果我经常打电话,这对最终用户来说是非常烦人的。

经过一番尝试,我得到了它的工作,没有窗口,当双击脚本,我使用红宝石的WMI,你只需要改变卷曲的路径。 重要说明:将其保存为扩展名.rbw,并确保rubyw.exe与该扩展名相关联。

 #hidden_curl.rbw require 'win32ole' HIDDEN_WINDOW = 0 cmd = '"C:\\Program Files\\curl\\curl.exe" --output c:\\test2.txt "http://stackoverflow.com/questions/10869789/hiding-curl-window-on-windows"' objStartup = WIN32OLE.connect("winmgmts:\\\\.\\root\\cimv2:Win32_ProcessStartup") objConfig = objStartup.SpawnInstance_ objConfig.ShowWindow = HIDDEN_WINDOW objProcess = WIN32OLE.connect("winmgmts:root\\cimv2:Win32_Process") errReturn = objProcess.Create(cmd, nil, objConfig, nil) 

希望这可以在你的系统上运行。

您可以尝试传递-s选项来使其以静音模式运行。 就像是

 `curl -s "#{url}"` 

我猜这不会显示控制台。

我认为你的问题是,你在一个子shell中运行命令,Windows中的子shell是连接到一个窗口的CMD。

我没有红宝石测试以下,但你可以尝试:

 IO#POPEN
将指定的命令字符串作为子进程运行; 
子进程的标准输入和输出将连接到返回的IO对象。

=> http://ruby-doc.org/core-1.8.6/IO.html如果你可以使用IO

你也可以尝试运行start /B curl -s "#{url}"而不是curl,参见http://www.computerhope.com/starthlp.htm了解启动规范。

这个解决方案不会在我的W7系统上弹出一个窗口

 cmd = '"C:\Program Files\curl\curl.exe" --silent --output c:\test.txt "http://stackoverflow.com/questions/10869789/hiding-curl-window-on-windows"' IO.popen(cmd) 

或者不创建文件

 cmd = '"C:\Program Files\curl\curl.exe" --silent "http://stackoverflow.com/questions/10869789/hiding-curl-window-on-windows"' IO.popen(cmd, "w+") { |io| puts io.readlines }