1

まず、私はビジュアル スタジオを使用していません。メモ帳と csc を使用しています。私がやろうとしているのは、Visual Studio の Windows アプリケーションのような exe を作成することです。つまり、exe をダブルクリックしてもコンソール ウィンドウがまったく開かないということです。私はこれを見つけました:

[DllImport("kernel32"]
public static extern IntPtr GetConsoleWindow();

IntPtr window = GetConsoleWindow();
if(window != IntPtr.Zero) ShowWindow(window, 0);

および同様のスニペットは機能しますが、コンソールはまだ一瞬表示されます。絶対に目立たないようにしたいです。

また、exe はスタンドアロンであり、手でダブルクリックする必要があるため、Process クラスを使用しても役に立ちません。実行中のプログラムからは起動されません。

また、vbs スクリプトを使用して exe を開くバットを起動することや、その他の回避策についても認識していますが、それらは私のニーズには合いません。

exe をコンパイルして、コンソール ウィンドウをまったく表示せずに単に開くにはどうすればよいですか? Visual Studio の Windows アプリケーションがそれを行うため、それは可能であるに違いありません。明確にするために、フォームも必要ありません。プログラムをバックグラウンドで実行したいだけです。コンソールが表示されないため、比較のためにWindowsアプリケーションのみを参照しています。

「Visual Studio を使用する」などの愚かな回答をしたり、回答ではなく質問で回答したりしないでください。ご協力ありがとうございました!

4

2 に答える 2

0

アンマネージ ライブラリ kernel32.dll と FreeConsole 関数を使用することをお勧めします。次に例を示します。

[DllImport("kernel32.dll")]
static extern bool FreeConsole();

static void Main(string[] args)
{
    FreeConsole();
    // Do other stuff
}

これがあなたが探しているものかどうか教えてください!

于 2012-10-11T03:11:44.190 に答える
0

片道しか行けません。

  1. CONSOLE サブシステムではなく、GUI サブシステムとして (独自の) アプリケーションを作成します。
  2. コンパイラを実行する場合 - CreateProcess または ShellExecute (C++) を SW_HIDE (CmdShow) と共に使用します。思い出せません。C# 関数に対応する引数はありますか? そうでない場合 - WinAPI を使用してコンパイラを起動します。

この方法では、コンソール ウィンドウが完全に見えなくなります。

于 2012-10-11T06:27:29.400 に答える