One of the answers on a previous question提到我可以使用curl来获取网址;这可以在Thread.new
或Process.spawn
中完成。但似乎在任何一种情况下,在Windows上,当curl进入网络时,我会看到一个小的命令提示窗口。
我正在调用curl:
`curl "#{url}"`
有没有办法隐藏窗口以使其不显示?它不仅将焦点从游戏中移开(冻结它),而且如果我经常打电话,对最终用户来说会非常烦人。
答案 0 :(得分:3)
经过一些实验,我得到它的工作,双击脚本时没有窗口,我使用ruby的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)
希望这适用于您的系统。
答案 1 :(得分:0)
您可以尝试将-s选项传递给curl,这将使其以静默模式运行。 像
这样的东西`curl -s "#{url}"`
我猜这不会出现在控制台上。
答案 2 :(得分:0)
我认为你的问题是你在子shell中运行命令,windows中的子shell是连接到窗口的CMD。
我没有测试以下内容的红宝石,但您可以尝试:
IO#popen Runs the specified command string as a subprocess; The subprocess‘s standard input and output will be connected to the returned IO object.
=>如果您可以使用IO,则http://ruby-doc.org/core-1.8.6/IO.html
你也可以尝试跑步
start /B curl -s "#{url}"
而不仅仅是curl,请参阅http://www.computerhope.com/starthlp.htm了解初学规格。
答案 3 :(得分:0)
此解决方案不会在我的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 }