3
Est-il possible de détecter si une application possède une fenêtre de console? Soit en utilisant AllocConsole ou si c'est une application console normale.Détecter la fenêtre de la console?
Edit:
Solution (grâce à la réponse de HO1):
public static class ConsoleDetector
{
private const uint ATTACH_PARENT_PROCESS = 0x0ffffffff;
private const int ERROR_ACCESS_DENIED = 5;
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool AttachConsole(uint dwProcessId);
[DllImport("kernel32", SetLastError = true)]
private static extern bool FreeConsole();
/// <summary>
/// Gets if the current process has a console window.
/// </summary>
public static bool HasOne
{
get
{
if (AttachConsole(ATTACH_PARENT_PROCESS))
{
FreeConsole();
return false;
}
//If the calling process is already attached to a console,
// the error code returned is ERROR_ACCESS_DENIED
return Marshal.GetLastWin32Error() == ERROR_ACCESS_DENIED;
}
}
}
Lorsque vous parlez de la fenêtre de console, faites-vous référence à une application de console ou simplement à une fenêtre? –
N'est-ce pas évident? Tout d'abord, j'ai mentionné la méthode AllocConsole puis j'ai écrit "application console" dans ma question. Enfin ho1 a donné une réponse mentionnant AttachConsole :) – jgauffin