2009-12-23 4 views

Répondre

6

Oui, vous aurez besoin d'un petit peu sur l'interopérabilité avec Win32 pour le faire.

public class ConsoleHelper 
{ 
    public static int Create() 
    { 
     if (AllocConsole()) 
      return 0; 
     else 
      return Marshal.GetLastWin32Error(); 
    } 

    public static int Destroy() 
    { 
     if (FreeConsole()) 
      return 0; 
     else 
      return Marshal.GetLastWin32Error(); 
    } 

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage"), SuppressUnmanagedCodeSecurity] 
    [DllImport("kernel32.dll", SetLastError = true)] 
    [return: MarshalAs(UnmanagedType.Bool)] 
    static extern bool AllocConsole(); 


    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2118:ReviewSuppressUnmanagedCodeSecurityUsage"), SuppressUnmanagedCodeSecurity] 
    [DllImport("kernel32.dll", SetLastError = true)] 
    [return: MarshalAs(UnmanagedType.Bool)] 
    static extern bool FreeConsole(); 
} 

Vous pouvez maintenant appeler Create() pour créer une fenêtre de console associée à votre application.

+1

merci. ça a marché. maintenant j'ai un autre problème. Si la console créée est fermée, toute l'application tombe en panne. Y a-t-il un moyen d'empêcher cela? –

+0

Pas facilement. Vous pouvez essayer de désactiver la fonctionnalité de fermeture en utilisant les techniques de ce post: http://stackoverflow.com/questions/877839/stop-a-net-console-app-from-being-closed/878334#878334 – Paolo

0

Commander Eric Petroelje's answer here. Il montre le code qui peut créer une console à l'exécution.

Questions connexes