C#のハイブリッドGUI/cliアプリケーションの例をたくさん見ました。私はそのようなアプリを実装しましたが、コマンドラインで実行されたときに.exeをすぐにプロンプトに戻さないようにする方法を考え出すのは苦労しています。私は次の出力C#hybird Winforms/console appがcmdプロンプトに戻る
C:\Users\john\Documents\Visual Studio 2010\Projects\test\test\test\bin\Debug>test.exe -param1 test
-param2 test2
C:\Users\john\Documents\Visual Studio 2010\Projects\test\test\test\bin\Debug>Output was successful. File saved as: c:\test\test.html
finished
はラインが私の、私は私が私のメインのコードのリーチの端を持って知っているとき、文字列のI出力である...これはWinformsのでは正常に動作し、「終了」を取得
//defines for commandline output
[DllImport("kernel32.dll")]
static extern bool AttachConsole(int dwProcessId);
private const int ATTACH_PARENT_PROCESS = -1;
[STAThreadAttribute]
static void Main(string[] args)
{
// load cli
// redirect console output to parent process;
// must be before any calls to Console.WriteLine()
AttachConsole(ATTACH_PARENT_PROCESS);
if (args.Length == 0)
{
//loads gui
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new form_Main());
}
else
{
cli_main cli = new cli_main();
cli.start_cli(args);
Console.WriteLine("finished");
System.Windows.Forms.SendKeys.SendWait("{ENTER}");
Application.Exit();
}
}
プロジェクトはWinformsで、私はGUIとして起動しましたが、現在はハイブリッドGUI/CLIにしようとしています
そして、私のメインコードとスレッドを実行しているように見えます。 ..
私はちょうど.exeをコマンドラインから実行したときにそのパラメータでコマンドラインに戻らないようにしておくのが困惑していますか?そして、点滅しているカーソルで待ってから、htmlファイルについての行を出力してから、「完了」の行を出力し、最後にコマンドプロンプトに戻ります。
は私が
System.Windows.Forms.SendKeys.SendWait("{ENTER}");
Application.Exit();
を削除し、代わりにApplication.Exit();
使用Environment.Exit(0);
を使用してのように、多くのものを試してみたが、それはいつもすぐにコマンドプロンプトに戻り、また、私はライン
cli.start_cli(args);
が、それは私が、私はそれがすぐにコマンドプロンプトに戻ることができる方法を理解していないと思いますし、それはそれさえもライン
を持っていない、どちらか動作しませんでしたConsole.WriteLine("finished");
私はハイブリッドCLIとGUI .exeを作成しようとしましたが、私はコンソールアプリケーション私は回避策を得たが、まだ秒間ポップアップするcmdウィンドウがポップアップする。だから私はちょうど2つの.exeと一緒に行った、GUIの1のためのcliのために作成し、.dllのlibを2の間のメインコードを共有するために作成した。 –