J'ai une solution générale à partager :
using System;
using System.Runtime.InteropServices;
namespace WhateverNamepaceYouAreUsing
{
class Magician
{
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
const int HIDE = 0;
const int SHOW = 5;
public static void DisappearConsole()
{
ShowWindow(GetConsoleWindow(), HIDE);
}
}
}
Il suffit d'inclure cette classe dans votre projet, et d'appeler Magician.DisappearConsole();
.
Une console clignote lorsque vous lancez le programme en cliquant dessus. Lorsqu'il est exécuté à partir de l'invite de commande, celle-ci disparaît très peu de temps après l'exécution.
Je fais cela pour un Bot Discord qui tourne en permanence en arrière-plan de mon ordinateur comme un processus invisible. C'était plus facile que de faire fonctionner TopShelf pour moi. Quelques tutoriels TopShelf ont échoué avant que je n'écrive ceci avec l'aide d'un code que j'ai trouvé ailleurs ;P
J'ai également essayé de modifier simplement les paramètres dans Visual Studio > Projet > Propriétés > Application pour lancer une application Windows au lieu d'une application console, et quelque chose dans mon projet m'a empêché de cacher ma console - peut-être parce que DSharpPlus demande de lancer une console au démarrage. Je n'en sais rien. Quelle que soit la raison, cette classe me permet de tuer facilement la console après qu'elle se soit affichée.
J'espère que ce magicien aidera quelqu'un ;)
0 votes
Essayez d'exécuter l'application console à partir d'une tâche planifiée.