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

Laisser un commentaire