J'ai une application console en C#, et je veux que l'utilisateur ne puisse pas la voir.Comment masquer une application console en C#
Comment puis-je faire cela?
J'ai une application console en C#, et je veux que l'utilisateur ne puisse pas la voir.Comment masquer une application console en C#
Comment puis-je faire cela?
Compile comme une application Windows Forms. Ensuite, il n'affichera aucune interface utilisateur si vous n'ouvrez pas explicitement Windows.
Vous pouvez Pinvoke un appel à FindWindow() pour obtenir une poignée de fenêtre, puis appelez ShowWindow() pour masquer la fenêtre OU Commencez votre application à partir d'un autre en utilisant ProcessStartInfo.CreateNoWindow
Je n'ai aucune idée si cela fonctionne, mais il est sûr de lire drôle! :) Appelez ShowWindow() pour le cacher ...;) – noocyte
Cela fonctionne quand même. –
Au lieu de la solution hacky 'FindWindow()', je préfère de loin [récupérer la poignée de la console correctement] (http://stackoverflow.com/questions/3571627) ... – Timwi
Cela ne ressemble pas à une application console, mais à une application graphique Windows qui n'ouvre pas une fenêtre (visible).
Créer une application console « MyAppProxy » avec le code suivant et mettre MyAppProxy en démarrage dir,
public static void main(string[] args)
{
Process p = new Process("MyApp");
ProcessStartUpInfo pinfo = new ProcessStartUpInfo();
p.StartupInfo = pinfo;
pinfo.CreateNoWindow = true;
pinfo.ShellExecute = false;
p.RaiseEvents = true;
AutoResetEvent wait = new AutoResetEvent(false);
p.ProcessExit += (s,e)=>{ wait.Set(); };
p.Start();
wait.WaitOne();
}
Vous devrez peut-être corriger certains éléments ici que je ne ai pas Verifiez du code, il ne peut pas compilez parce que certains noms de propriété peuvent être différents, mais espérons que vous aurez l'idée.
C'est la façon de le faire. Le secret est la propriété CreateNoWindow. –
Créez un service wcf et hébergez-le en fonction de vos besoins.
Je pense que c'est trompeur et complètement dans la mauvaise direction. Les utilisations d'une application cachée peuvent être complètement différentes d'un service wcf. – ericosg
La meilleure façon est de démarrer le processus sans fenêtre.
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "echo Hello!";
//either..
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
//or..
p.StartInfo.CreateNoWindow = true;
p.Start();
Voir d'autres solutions probables -
Toggle Process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden at runtime
et,
Bring another processes Window to foreground when it has ShowInTaskbar = false
Sur ProjectProperties définir le type de sortie comme application Windows.
Pour masquer une applicatin console en C# quand rien ne fonctionne utilisent ce code:
[DllImport("kernel32.dll")]
public static extern bool FreeConsole();
Lieu FreeConsole() partout dans le code, je l'ai placé dans le Init(), et la ligne de commande est caché.
Cela semble être un peu plus simple que de le faire. Lorsque vous détachez le processus de sa console en utilisant FreeConsole(), la console est terminée. Vous devez vous rappeler de terminer le processus lorsque le travail est terminé, car il n'y a pas de console pour le faire pour vous, à moins que je ne manque quelque chose (je me dis si je le fais). Toujours, une méthode très soignée. –
Est-ce un service que vous voulez exécuter en arrière-plan? –
Oui, mais je ne veux pas l'exécuter en tant que service, je veux l'exécuter en tant que. Exe – menacheb
Comment l'application commencerait-elle? – noocyte