1

以前の質問に対する回答の 1 つで、 curl を使用して URL をフェッチできると述べていました。Thread.newこれはまたは で実行できますProcess.spawn。しかし、どちらの場合でも、Windows では、curl がネットワークに出ている間に小さなコマンド プロンプト ウィンドウが表示されるようです。

次のようにカールを呼び出しています。

`curl "#{url}"`

ウィンドウが表示されないように非表示にする方法はありますか? ゲームからフォーカスを奪う (フリーズする) だけでなく、頻繁に電話をかけると、エンド ユーザーにとって非常に迷惑になります。

4

4 に答える 4

3

いくつかの実験の後、スクリプトをダブルクリックしてもウィンドウが表示されず、Ruby の WMI を使用しています。curl へのパスを変更するだけです。重要: 拡張子 .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)

これがあなたのシステムでうまくいくことを願っています。

于 2012-06-03T22:48:36.047 に答える
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 }
于 2012-06-03T17:01:47.790 に答える
0

問題は、コマンドをサブシェルで実行し、Windows のサブシェルがウィンドウに接続されている CMD であることだと思います。

以下をテストするルビーはありませんが、試すことができます:

IO#popen
指定されたコマンド文字列をサブプロセスとして実行します。
サブプロセスの標準入出力は、返された IO オブジェクトに接続されます。

=> IO が利用可能な場合はhttp://ruby-doc.org/core-1.8.6/IO.html

start /B curl -s "#{url}" curl の代わりに実行を試みることもできます 。開始仕様についてはhttp://www.computerhope.com/starthlp.htmを参照してください。

于 2012-06-03T11:53:01.603 に答える
0

-s オプションを curl に渡してみてください。これにより、サイレント モードで実行されます。何かのようなもの

`curl -s "#{url}"`

これはコンソールに表示されないと思います。

于 2012-06-03T11:31:40.863 に答える