Process.start() を使用して C# フォームから C++ exe を実行します

StackOverflow https://stackoverflow.com/questions/2526481

  •  22-09-2019
  •  | 
  •  

質問

以前のすべての C++ プログラムを 1 つの中央プログラムから使用できるようにする C# フォーム アプリを作成しようとしています。

exeファイルを開くことができます Process.Start(), ただし、コードは正しくコンパイルされません。

コード例:

Process.Start("C:\\\Documents and Settings\\\dan\\\Desktop\\\test.exe");

これによりコンソールが表示され、コンソールが実行されているかのように動作しますが、通常 C++ エディターからコンパイルするときのようには実行されません。ありますか startinfo C++ プログラムかそれに沿ったものであることを示すために設定する必要がある変数は何ですか?

また、次を使用して C++ プログラムを実行する方法はありますか? process.start これにより、コマンドラインから変数を渡すことができます。 argc そして argv?

ありがとう

役に立ちましたか?

解決

Process.Start を以前の方法で使用する場合と、Process.Start を使用する場合の違いはいくつかだけです。プログラムを直接実行する場合。どちらも次のように対処できます プロセス開始情報.

  1. 作業ディレクトリ 同じではありません。同じ動作を得るには、これを実行可能ファイルを含むパスに設定します。
  2. セット シェル実行を使用する true に設定すると、プロセスの実行に Windows シェルが使用されます。

コマンドライン引数の追加については、次のようになります。あなたはそれを行うことができます ProcessStartInfo.Arguments. 。ただし、C++ アプリケーションであるため、これは必要ありません。

他のヒント

これまでのところ、あなたの最後の質問に答えるだけの十分な情報があります。 をここに示したようにはい、あなたは、コマンドライン引数を含めることができます。セクションを見て、 "EXE(C#)を実行するプログラム=== ==="

コマンドライン引数を追加するには:

Process process = new Process();
process.StartInfo.FileName = "C:\\Documents and Settings\\dan\\Desktop\\test.exe";
process.StartInfo.Arguments = ""; // Put your arguments here
process.Start();
プログラムはEXEにコンパイルされた後、

、それはどのような言語それがで書かれていてはいけません。

プログラムの引数については、あなたがProcessStartInfoクラスを見てみる必要がある、とProcess.Startのオーバーライド()を使用している:<のhref = "http://msdn.microsoft.com/en-私たち/ライブラリ/ 0w4h05yb.aspx」のrel = "nofollowをnoreferrer"> Process.Start(ProcessStartInfo)の

私は、Pythonで同様の問題に直面したあなたは、出力VERBOSE期待していますか?

私の場合は、出力バッファがいっぱいだので、実行が停止しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top