2

ゲーム PSOBB 用の小さなローダーを作成していますが、オフライン バージョンでは、「servers」というフォルダーに移動して 3 つのサーバー実行可能ファイルすべてを起動するのが面倒なので、このプログラムを作成しています。だから私の問題は、別のフォルダー(サブディレクトリ)から.exeを起動するボタンを作成したことです。

private void startLoginServerButton_Click(object sender, EventArgs e)
{
    Process[] killLoginServer = Process.GetProcessesByName("login_server");

    if (killLoginServer.Length == 0)
    {
        Process.Start("servers\\login_server.exe");
        System.Threading.Thread.Sleep(1000);
        refresh(); // This goes to another method and checks if the program is running
    }
    else if (killLoginServer.Length > 0)
    {
        foreach (Process stop in killLoginServer)
        {
            stop.Kill();
        }
        System.Threading.Thread.Sleep(1000);
        refresh();
    }
}

プロセスが実行されているかどうかを確認し、実行されていない場合は起動します。問題は、ボタンを押すと起動しますが、完全にロードされないため閉じますが、プロセスを手動で開始すると正常に動作します。ローダーを管理者として実行しようとしましたが、何もありません...フルパスを指定しようとしましたが、問題はまだあります。

4

2 に答える 2

0

あなたの道は間違っています..

その場所で見つかったプロセスを開始するときは、そのパスを完全に修飾する必要があります。msdnを参照

あなたのPCで:Process.Start("C:\\myprocess.exe");

他のPCで:Process.Start("OtherPcNetAddress\\SharedFolder\\myprocess.exe");

于 2013-03-30T07:53:23.313 に答える
0

私はあなたの道が正しいとは思わない。次のように絶対パスを指定する必要があります。

Process.Start(@"C:/servers/login_server.exe");

または、次のような相対パス:

Process.Start(Path.Combine(Environment.CurrentDirectory, @"servers/login_server.exe"));
于 2013-03-30T08:07:15.867 に答える