2010-12-01 5 views

Répondre

8

Utilisez Environment.UserInteractive. Si true vous êtes dans une console. Si false vous pourriez être dans un service.

+0

'UserInteractive' est' true' pour une application fenêtrée, pas seulement pour une application console. – Qwertie

+0

Il n'y a pas d'interface utilisateur sur une console. –

1

Les informations dont vous avez besoin sont la propriété de votre assemblage exe. Si vous utilisez un outil tel que ildasm.exe pour afficher le manifeste de votre assembly, vous pouvez voir la propriété .subsystem qui indique le type d'environnement d'exécution qui lance votre méthode Main.

Cependant, il semble que Reflection n'expose pas directement cette information.

Le code dans le lien suivant contient un exemple pour savoir comment lire le fichier .exe lui-même et détecter ce infromation:

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

J'espère que cela a aidé.

+0

acclame Ran, mais je voudrais que mon code dans la bibliothèque soit détecté si le processus qui a appelé cette bibliothèque fonctionnait en mode console. mais merci pour le lien de toute façon, bien sûr que ça viendra à portée de main à un moment donné. – Heinnge

+0

Cette méthode devrait toujours fonctionner. Vous pouvez utiliser Assembly.GetEntryAssembly (ou quelque chose comme ça, je ne me souviens pas du nom exact), puis utiliser Assembly.Location pour trouver le fichier .exe lui-même. – Ran