104 votes

Trouver la poignée d'une fenêtre WPF

Les formulaires Windows avaient une propriété win1.Handle qui, si je me souviens bien, retournait la poignée de la fenêtre principale ?

Existe-t-il un moyen équivalent d'obtenir le handle d'une fenêtre WPF ?

J'ai trouvé le code suivant en ligne,

IntPtr windowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle;

mais je ne pense pas que cela m'aidera car mon application comporte plusieurs fenêtres.

Merci !

136voto

Gregory Higley Points 4509

Eh bien, au lieu de passer Application.Current.MainWindow il suffit de passer une référence à n'importe quelle fenêtre que vous voulez : new WindowInteropHelper(this).Handle et ainsi de suite.

39voto

Reed Copsey Points 315315

Il suffit d'utiliser votre fenêtre avec la classe WindowsInteropHelper :

// ... Window myWindow = get your Window instance...
IntPtr windowHandle = new WindowInteropHelper(myWindow).Handle;

Pour l'instant, vous demandez la fenêtre principale de l'application, et il y en aura toujours une. Vous pouvez toutefois utiliser cette même technique sur n'importe quelle fenêtre, à condition qu'il s'agisse d'une classe de fenêtre dérivée de System.Windows.Window.

5voto

Amer Sawan Points 1080

Vous pouvez utiliser :

Process.GetCurrentProcess().MainWindowHandle

3voto

dustyburwell Points 4501

Si vous voulez des poignées de fenêtre pour TOUTES les fenêtres de votre application Window pour une raison quelconque, vous pouvez utiliser le Application.Windows pour accéder à toutes les fenêtres, puis utiliser la propriété WindowInteropHandler pour atteindre leurs poignées comme vous l'avez déjà démontré.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X