2009-04-26 9 views
3

J'ai une application qui fonctionnera principalement en arrière-plan. Je souhaite que certains événements système soient gérés pour que l'application puisse dérober l'application de premier plan, quelle qu'elle soit. Mais UIElement.Focus() semble seulement mettre l'accent dans l'application WPF. En d'autres termes, si l'application WPF a déjà le focus dans son ensemble, Focus() définit le focus sur le bon contrôle. Mais je dois voler l'accent d'une autre application et le mettre sur mon application. Comment puis-je faire ceci?Définir le système sur mon application

Je ne pas voulez un dialogue modal système. C'est-à-dire, après que la fenêtre vole l'attention, il devrait être possible pour l'utilisateur de passer immédiatement à une autre application sans fermer la fenêtre de mon application.

L'application a peut-être déjà été restaurée, réduite ou même "réduite au niveau de la barre d'état" lorsqu'elle doit dérober le système. Donc, supposer qu'il est minimisé et voler le focus tout en restaurant la fenêtre n'est pas acceptable.

+0

ans Ironie du sort plus tard, je me demande pourquoi je voulais dans le monde de le faire. Je déteste les applications qui font cela. –

Répondre

6

Si vous ne rechignent pas à faire som p/invoque, la fonction SetForegroundWindow devrait être en mesure de vous aider:
http://pinvoke.net/default.aspx/user32/SetForegroundWindow.html

+0

Il est également intéressant de lire les remarques dans la documentation SetForegroundWindow: http://msdn.microsoft.com/en-us/library/ms633539(VS.85).aspx Dans certains cas, Windows empêche les fenêtres d'arrière-plan de se forcer au-dessus de autres fenêtres –

Questions connexes