Question

Je sais que cela peut ne pas être une bonne pratique, mais c'est toujours quelque chose que je voudrais mettre en œuvre.

J'ai une application WPF Windows que je veux seulement exécuter une instance de.Si l'utilisateur tente de démarrer le programme à nouveau, une boîte de message indique que le programme est déjà en cours d'exécution.Cette vérification est effectuée dans App.xaml.cs.

jusqu'à présent si bon.Tout fonctionne comme prévu.

J'aimerais développer cette fonctionnalité pour vous concentrer et apporter le main-d'œuvre principal du programme à l'avant du bureau des utilisateurs, sur d'autres fenêtres et applications.J'ai essayé de nombreuses approches, mais je ne peux pas le faire fonctionner.Cela devrait également se produire dans App.xaml.cs où je teste si l'application est déjà en cours d'exécution.

Il n'est pas possible de le faire dans WPF?J'ai essayé des pinvokes et d'autres choses, mais rien ne semble travailler pour moi.

meilleures salutations

nicki

Était-ce utile?

La solution 2

J'ai trouvé une solution.

Ajout d'une référence à VisualBasic donne accès à Interactive.Appactivate, qui peut activer tout processus de processeur, que j'ai déjà mis en œuvre.

Cette page m'a donné la solution Appactivate en C #

Je vérifie le processus d'exécution de la manière suivante

Process currentProcess = Process.GetCurrentProcess();
        var runningProcess = (from process in Process.GetProcesses()
                              where
                                process.Id != currentProcess.Id &&
                                process.ProcessName.Equals(
                                  currentProcess.ProcessName,
                                  StringComparison.Ordinal)
                              select process).FirstOrDefault();
        if (runningProcess != null)
        {
            Microsoft.VisualBasic.Interaction.AppActivate(runningProcess.Id);
            return;
        }

Autres conseils

Avez-vous essayé de l'activer?

Application.Current.MainWindow.Activate();

Bien sûr, si vous l'aimez rester en haut à tout moment que:

Application.Current.MainWindow.Topmost = true;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top