2

コンソール アプリケーションとしても実行される Windows アプリケーションに関連するいくつかの質問があります。

私のプログラムのエントリ ポイントには、コマンド ライン パラメーターが渡されているかどうかを判断するロジックがあり、渡されている場合はAllocConsole()を呼び出します。これは十分に機能しますが、新しいコンソール ウィンドウをポップしないようにすることが可能かどうかに興味があります。したがって、ユーザーがコマンドウィンドウからこれを呼び出すことが期待されるため、アプリケーションからの出力を、他の画面ではなく、ユーザーが現在作業しているウィンドウに表示したいと考えています。さらに、 AllocConsole()を介してポップされるコンソール ウィンドウユーザーフレンドリーではありません。たとえば、ユーザーが引数のキーを間違えた場合、新しいウィンドウが開き、ユーザーに間違いを知らせ、ユーザーは元のウィンドウに戻って間違いを修正し、コマンドを再度実行する必要があります。基本的に、私はより伝統的なコマンド ライン エクスペリエンスを探しています。これは私のシナリオで可能ですか?

次の質問は、コンソール出力のフォーマットに関するものです。ここSOとMSDNでいくつかの記事を読みましたが、良い答えが見つからないようです。私は現在、次のようなことをしています:

 Console.WriteLine("{0,0}\t\t{1,10}", item.Key, item.Value);

これは十分に機能しますが、item.Value の値が数行の長さになり、複数の行が折り返される可能性は十分にあります。item.Value のテキストが行を折り返すが、独自の列に限定され、item.Key の値の下に折り返されない、より伝統的な「テーブル」レイアウトを探しています。これは可能ですか?可能である場合、最善の方法は何ですか?

ありがとう!

4

1 に答える 1

1

AttachConsoleはあなたが探しているものだと思います。Pinvoke - AttachConsoleには正しい署名とサンプルが含まれています。以下は www.pinvoke.net からコピーされた署名です。

[DllImport("kernel32.dll", SetLastError = true)]
  static extern bool AttachConsole(uint dwProcessId);

...(!AttachConsole(ATTACH_PARENT_PROCESS)...
于 2012-11-12T16:21:00.230 に答える