我有一个Windows游戏服务器(Mount&Blade: Warband),我正试图通过Rails应用程序远程控制它。我找到了一种使用Windows脚本托管将文本发送到游戏服务器的方法,如下所示:
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}"
虽然这感觉很脆弱,但当我在本地机器上尝试它时,它似乎确实有效;它成功地将焦点转移到游戏服务器,将其参数作为文本发送到游戏服务器,并启动游戏。
我的思路是让我的Rails应用程序在游戏命令为POSTed时调用WSH可执行文件(使用适当的Rails身份验证和安全授权)。如果我是远程桌面( Remote‘’ed)到运行Rails的远程机器和游戏服务器中,这是可行的,但是一旦我断开了远程桌面会话,它就不再工作了。Rails服务器接收请求,调用脚本,但我猜'AppActivate‘命令找不到窗口。
如果是Linux机器,我想我可以使用一个命名管道。这里有什么想法吗?动力壳?也许是TCL?我可以关闭游戏服务器进程,编辑配置,然后重新启动游戏服务器,但是每个人都会被断开连接。
发布于 2014-01-31 23:31:43
如果Rails服务器作为Windows服务运行,您可能会遇到交互式应用程序的会话0隔离问题。
请参阅:http://blogs.technet.com/b/voy/archive/2007/02/23/services-isolation-in-session-0-of-windows-vista-and-longhorn-server.aspx
https://stackoverflow.com/questions/21418543
复制相似问题