J'ai une application Windows Forms qui permet à une seule instance d'être exécutée à la fois. J'ai implémenté Singleton en utilisant Mutex. L'application doit pouvoir être démarrée à partir de la ligne de commande (avec ou sans paramètres). L'application est démarrée et quittée par le script. L'utilisateur ne peut pas effectuer d'action dessus. Ainsi, le but de l'application est simple application "indicateur" qui va juste afficher des informations visuelles et graphiques pour l'utilisateur final. L'utilisateur final ne peut rien faire avec, juste le voir. C'est l'application de formulaires de fenêtres parce que l'apparence visuelle et graphique est relativement facile à mettre en œuvre (vous pouvez l'obtenir le plus haut, sans bordure, etc.). Pour dire les choses simplement: Comment puis-je quitter l'application en cours lorsque quelqu'un essaie d'exécuter la même application avec le paramètre de ligne de commande de sortie?Une fenêtre d'instance unique forme une application et comment y accéder?
bool quit = (args.Length > 0 && args[0] == "quit") ? true : false;
using (Mutex mutex = new Mutex(false, sExeName))
{
if (!mutex.WaitOne(0, true))
{
if (quit)
{
// This is the tricky part?
// How can I get reference to "previous" launced
// Windows Forms application and call it's Exit() method.
}
}
else
{
if (!quit)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Microsoft a détruit un autre lien. Vont-ils apprendre? –
https://blogs.msdn.microsoft.com/tyler_whitney/2005/11/28/single-instance-applications-and-c/ –
Peut-il être fait sans 'Microsoft.VisualBasic'? –