Process.Start()多次传递相同的参数?

时间:2019-01-02 14:17:30

标签: c#

我有下面的代码(如下),它开始运行游戏并将一个参数传递给它。然后,游戏将连接到多人服务器,并且可以运行,但是,我想知道是否存在一种无需反复打开相同程序即可传递相同参数的方法。

我试图使用一个循环(同时),但是,由于Process.Start()也多次启动相同的程序,所以效果并不理想。

    private void JoinS3(object sender, RoutedEventArgs e)
    {
        string arg = "-connect=164.132.202.63:2302";
        Process.Start(FileData.GetSteamFolderPath, arg);
    }

还有其他方法可以将参数传递给已打开的进程吗?

1 个答案:

答案 0 :(得分:0)

Process.Start类似于双击exe文件。

您可以在启动程序时传递参数。如果程序正在运行,则必须以某种方式读取这些其他输入。

一个简单的示例游戏:

public class MyGame
{
    public static void Main(string[] args) // Here our Exe-Args are delivered to our program..
    {
        // Some dummycode to show what is done with your Args..
        if (args != null && args.Length > 0)
        {
            string server = args.Where(a => a.StartsWith("-connect")).Select(s => s.Split(':').Last()).FirstOrDefault();
            if (server != null)
                ConnectToServer(server); // when starting with a "-connect" your game is stuck in this method.
        }

        // this will not be executed, because we are alread in the game, after "ConnectToServer()"
        ShowGameIntro();
        StartMainMenu();
    }
}

如果使用“ -connect:...”运行此“游戏”,则程序将“卡在”函数“ ConnectToServer()”内。它不会要求您提供更多参数。现在,游戏由服务器负责。 游戏可以通过听键盘或鼠标要求用户输入,但是您不能强迫它这样做。而且,在开始游戏时,那些输入不需要接受任何开始参数。

大多数游戏都有控制台。您可以在其中放置一些命令。

反恐精英示例: 如果您使用的是服务器,则可以通过按^并键入以下命令来打开控制台:

connect 192.168.0.1
disconnect
connect 192.168.0.1
disconnect
connect 192.168.0.1
disconnect

这将完成您想做的事情。如果这是您想要做的,则应阅读有关如何为游戏编写脚本的信息。之后,您应该问自己如何发送这些命令。但这是另一个问题;-)