Comment concentrer l'application WPF Windows de APP.XAML.CS
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
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;