2010-12-01 5 views
2

は、このコンポーネントを使用するアプリケーションがコンソールアプリケーションなどで実行されている場合、C#のコンポーネントの内部を検出する方法ですか?私はコンソールアプリですか?

答えて

8

Environment.UserInteractiveを使用してください。 trueあなたがコンソールにいる場合。 falseの場合は、サービスを受けることができます。

+0

'UserInteractive'はコンソールアプリケーションだけでなく、ウィンドウアプリケーションの' true'です。 – Qwertie

+0

コンソールにUIがありません。 –

1

必要な情報は、exeアセンブリのプロパティです。 ildasm.exeなどのツールを使用してアセンブリのマニフェストを表示すると、メインメソッドを起動する実行環境の種類を示す.subsystemプロパティが表示されます。

しかし、Reflectionはこの情報を直接公開していないようです。

次のリンクのコードは.exeファイル自体を読み、これのinfromationを検出する方法のための例が含まれています

http://blogs.msdn.com/b/kstanton/archive/2004/03/31/105060.aspx

私はこれが助けを願っています。

+0

歓声が鳴っていますが、このライブラリを呼び出すプロセスがコンソールモードで実行されているかどうかを検出するために、ライブラリのコードが必要です。とにかくリンクのためにありがとう、確かにそれはいつか便利になるでしょう。 – Heinnge

+0

この方法はまだ有効です。 Assembly.GetEntryAssembly(またはそのようなもの、私は正確な名前が覚えていない)を使用し、Assembly.Locationを使用して.exeファイル自体を見つけることができます。 – Ran

関連する問題