web-dev-qa-db-fra.com

Trouver le handle d'une fenêtre WPF

Les formulaires Windows avaient une propriété win1.Handle qui, si je me souviens bien, renvoie le handle du handle 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 va m'aider car mon application a plusieurs fenêtres.

Merci!!

97
Evan

Au lieu de passer Application.Current.MainWindow, Il vous suffit de passer une référence à la fenêtre de votre choix: new WindowInteropHelper(this).Handle et ainsi de suite.

128
Gregory Higley

Utilisez simplement votre fenêtre avec la classe WindowsInteropHelper:

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

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

36
Reed Copsey

vous pouvez utiliser :

Process.GetCurrentProcess().MainWindowHandle
4
Amer Sawan

Si vous voulez des poignées de fenêtre pour TOUTES les Windows de votre application pour une raison quelconque, vous pouvez utiliser le Application.Windows propriété pour accéder à tous les Windows et ensuite utiliser WindowInteropHandler pour obtenir leurs poignées comme vous l’avez déjà démontré.

3
dustyburwell