2014-01-28 6 views
1

Rails 응용 프로그램을 통해 원격으로 제어하려는 Windows 게임 서버 (Mount & 블레이드 : Warband)가 있습니다. 나는 다음과 같이 Windows 스크립트 호스팅 사용하여 게임 서버에 텍스트를 보낼 수있는 방법을 발견 :이 허약 한 느낌이 있지만레일을 통한 HTTP를 통한 원격 WSH

Set ArgObj = WScript.Arguments 
Set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.AppActivate "mb_warband_dedicated" 

For lcv = 0 to ArgObj.Count - 1 
    WshShell.SendKeys ArgObj(lcv) 
    WshShell.SendKeys "{Enter}" 
Next 
WshShell.SendKeys "start" 
WshShell.SendKeys "{Enter}" 

, 내 로컬 컴퓨터에 그것을 시도 할 때 제대로 작동 않습니다를; 그것은 성공적으로 게임 서버로 포커스를 옮기고, 텍스트로 인수를 게임 서버로 보내고, 게임을 시작합니다.

나의 레일스 앱은 게임 명령이 POST 될 때 (적절한 레일즈 인증 및 보안 권한 부여를 사용하여) WSH 실행 파일을 호출하도록했습니다. 원격 데스크톱에서 Rails와 게임 서버를 실행하는 원격 컴퓨터에 연결하면 원격 데스크톱 세션이 끊어지면 더 이상 작동하지 않습니다. Rails 서버가 요청을 받고 스크립트를 호출하지만 'AppActivate'명령이 창을 찾을 수 없다고 생각합니다.

Linux 머신이라면 named pipe를 사용할 수있을 것 같습니다. 어떤 아이디어가 있습니까? Powershell? 어쩌면 TCL일까요? 게임 서버 프로세스를 죽이고 구성을 편집 한 다음 게임 서버를 다시 시작할 수는 있지만 모두 연결이 끊어졌습니다.

+1

레일 서버가 Windows 서비스로 실행됩니까? 그렇다면 대화 형 응용 프로그램에서 세션 0 격리 문제가 발생할 수 있습니다. 참조 : http://blogs.technet.com/b/voy/archive/2007/02/23/services-isolation-in-session-0-of-windows-vista-and-longhorn-server.aspx –

+0

우리는 ' Windows 용 RailsInstaller를 사용합니다. 'tasklist/svc'를 실행하면 'ruby.exe'가 나열됩니다. 그렇습니다. Windows 서비스로 실행 중이며 링크가 적용될 수 있다고 생각합니다. 감사합니다. 잠시 후에 해결책이 될지 확신 할 수는 있지만, 답변으로 게시하면 추가 문제가있을 경우 새로운 질문을하고 받아 들일 것입니다. – lwiseman

답변