2012-06-03 4 views
1

One of the answers on a previous question은 컬링을 사용하여 URL을 가져올 수 있다고 언급했다. 이것은 Thread.new 또는 Process.spawn에서 할 수 있습니다. 그러나 어느 쪽의 경우에도 Windows에서 컬이 네트워크로 나가는 동안 작은 명령 프롬프트 창이 나타납니다.윈도우에 컬링 윈도우가 보이지 않는다.

나는이 같은 컬 호출 오전 :

`curl "#{url}"` 

가 나타나지 않도록 창을 숨길 수있는 방법이 있나요? 게임에서 멀리 떨어져 초점을 맞출뿐만 아니라 (자주 멈추지 만) 자주 전화를 걸면 최종 사용자에게 매우 짜증나게됩니다.

+0

컬 (curl) 실행 파일을 어떻게 부르시겠습니까? 그것은 배치 스크립트를 통해 무엇입니까? – Raam

+0

HTTP 요청을하기 위해 외부 프로그램이 필요한 특별한 이유는 무엇입니까? 이것은 괜찮은 stdlib이 자체적으로 잘 할 수있는 것입니다. – Joey

+0

죄송합니다. 이전 질문을 링크해야합니다. @Raam through backticks ('curl ...') – ashes999

답변

0

-s 옵션을 curl에 전달하면 자동 모드로 실행됩니다.

`curl -s "#{url}"` 

같은 뭔가 내가 콘솔에 표시되지 않습니다이 추측하고있다.

+0

아니, 여전히 창문을 터뜨렸다. – ashes999

0

당신이 문제는 당신이 서브 쉘에서 명령을 실행하고 윈도우의 서브 쉘이 창에 붙어있는 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. 

=>http://ruby-doc.org/core-1.8.6/IO.html IO을 사용할 수 있는지

당신은 또한 대신 start /B curl -s "#{url}" 실행을 시도 할 수 있습니다 시작 사양에 대해서는 http://www.computerhope.com/starthlp.htm을 참조하십시오.

+0

이러한 옵션 중 어느 것도 도움이되지 않습니다. 두 명령 모두 명령 프롬프트 창을 잠시 표시합니다. – ashes999

0

이 솔루션은

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) 

또는 일부는 내가에 doubleclicking 때, 어떤 창을 작동하지 가지고 실험을 한 후 파일

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 } 
+0

한 번 살펴 보겠습니다. 그러나 새로운 소식은 없습니다. 나는 시험해 보았다. 그리고 창문이 튀어 나왔다. – ashes999

+0

나는 --silent를 추가했으나 반드시 필요하지는 않습니다. 나는 그것을 버리고 콘솔 창을 얻지 못했습니다. 버전 2는 콘솔 창에서 출력을 보여줍니다. 버전 1에서 보여줍니다. 아무것도 안 함 – peter

+0

XP에서 나에게 명령 프롬프트 창이 표시됩니다. VX Ace는 이상한 시스템을 가지고 있습니다. 일상적인 Ruby가 아닙니다. – ashes999

3

을 만들지 않고 내 W7 시스템에 창을 팝업하지 않습니다 스크립트, 나는 루비에서 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) 

희망은이 시스템에서 작동합니다.

+0

나는 이미 스크립트를 클릭하지 않고 인터프리터에서 ruby를 호출한다고 설명했다. RBW는 슬프게도 차이를 만들지 않습니다. 그래도 고마워. – ashes999

+0

@ashes, 적어도 이걸 실행 해보길 바란다. .rbw는 doubleclicking으로 시작한다면 마법은 거기에있다. 나를 믿어 라. – peter

+0

더블 클릭은 내 게임의 맥락에서 이해가 가지 않는다. 콘텐츠 및 Ruby 코드가있는 게임 엔진을 실행하는 최종 사용자가 있습니다. 나는 그들에게 "이봐,이 RBW 파일을 실행해라, 나는 그것이 최고라고 약속 할 수 없다"고 말할 수 없다. – ashes999

관련 문제