Archives mensuelles : juillet 2007

Appliquer une configuration en .Net

Une configuration d’application peut provenir de plusieurs endroits:

  • de la racine de l’application (appliquée par défaut)
  • du compte utilisateur
  • d’un path quelconque

Le premier cas est appliqué par défaut, donc occupons-nous des 2 suivants.

Dans le cas du compte utilisateur, le framework .Net va automatiquement récupérer la bonne configuration suivant le niveau d’accès choisi.

Un exemple de code:

System.Configuration.Configuration config;
config = ConfigurationManager.OpenExeConfiguration(configAccessLevel);

Enfin à partir d’un chemin d’accès:

public static System.Configuration.Configuration GetConfigByPath(string path)
{
      if (!File.Exists(path)) return null;

       ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
       fileMap.ExeConfigFilename = @path;
       return ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
}

Attacher une console à une application WinForm

Au sein d’un projet WinForm pur, si l’application est lancée à partir d’une console (cmd), Console.Out n’écrira pas sur cette dernière pour la raison suivante:
la fenêtre de console est contenu dans le processus « cmd.exe », ce dernier instancie l’application dans un nouveau processus indépendant.

Pour lier l’application à la console appelante, nous devons faire coopérer notre application avec la console parent.
Pour ce faire, nous allons utiliser les fonctions COM du systèmes d’exploitation.

Lien MSDN:
http://msdn2.microsoft.com/en-us/library/ms682073.aspx

Exemple de mise en place:

//AttachConsole nous permettra de d'attacher un processus console au processus courant.
//FreeConsole nous permettra de les détacher.

[DllImport("kernel32.dll")]
static extern bool AttachConsole( int dwProcessId);

const int PARENT_PROCESS=-1;

[STAThread]
static void Main(string[] args)
{
        AttachConsole(PARENT_PROCESS);
}

Src:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/attachconsole.asp