1

現在 .bat と .exe の選択であるスイートをテストするためのラッパーとして機能する GUI の作成を検討しています。

このようなラッパーを実装するにはどうすればよいですか? ProcessStartInfoを使用して、C#内から.batと.exeを実行することを調べました(そして遊んでみました)(C# ProcessStartInfo read Output "live" (Concurrent)を参照)。

これを実装するにはどうすればよいですか?一部の .exe では環境変数を設定する必要がありますが、C# アプリ内から起動する .exe に対してこれらを設定することは可能ですか?

.bat を C# からの実際の呼び出しに置き換えて、これらの各コマンドを実行することは可能ですか?

誰かが以前に同様のラッパーを書いたことがありますか?

4

2 に答える 2

3

コマンドラインから必要な .exe および .bat ファイルを起動できる場合は、次を使用できます

System.Diagnostics.Process.Start("myProg.exe", "cmdParam");

パラメータ cmdParam を使用して myProg.exe を起動します。そこから、実行する各プログラム (またはプログラムのセット) のボタンを使用して WinForms アプリをノックアップし、クリック ハンドラー コードでそれらを起動するだけです。もちろん、ファイルへのパスを知る必要がありますが、ファイルを使用する前に、ファイルがそこにあるかどうかを確認するロジックをいつでも追加できます。

それを巧みに使いたい場合は、標準のファイルを開くダイアログをフックしてそれらを見つけ、テキストボックスを追加してそのコマンドラインパラメーターの文字列を入力すると、次のようになります。

public class MyBatchFile
{
    public string Name { get; set; }
    public string FilePath { get; protected set; }
    public string DefaultParams { get; protected set; }

    public MyBatchFile(string filePath, string defaultParams)
    {
        FilePath = filePath;
        DefaultParams = defaultParams;
    }

    public string Run(string params = null)
    {
        System.Diagnostics.Process.Start(FilePath, (params ?? DefaultParams));
    }
}

これらを保存するためにプログラムを内部に保持することができますList<Program>それを本当に賢くしたい場合は、そのリストをファイルにシリアル化するメソッドを追加し、そのファイルを読み込んで、記述されているファイルがまだそこにあることを確認するコードを追加できます。バッチ ファイルとコマンド ライン ツールがどこにあるかを記憶し、それらを起動するための簡単なインターフェイスを提供する小さなプログラム起動 GUI。ワンクリックで複数のことを実行できるように、それらをセットにグループ化する方法を追加することもできます.

他に何もないとしても、この回答は、私が常に外出先でプログラミング プロジェクトを行っている理由を説明しています。

于 2013-01-30T16:07:50.603 に答える
1

一部の .exe では環境変数を設定する必要がありますが、起動する .exe に対して C# アプリ内からこれらを設定することは可能ですか?

ProcessStartInfo.EnvironmentVariablesプロパティを使用する

.bat を C# からの実際の呼び出しに置き換えて、これらの各コマンドを実行することは可能ですか?

任意のバッチファイル番号の場合。これは、バッチ ファイルに制御フロー ステートメント (loopsおよびif) を含めることができるためです。もちろん、特定のバッチ ファイルを手動で変換することもできます。

于 2013-01-30T17:57:18.120 に答える