2009-10-12 16 views
82

I moduli Windows avevano una proprietà win1.Handle che, se ricordo, restituisce l'handle dell'impugnatura della finestra principale?Trovare l'handle in una finestra WPF

Esiste un modo equivalente per ottenere l'handle di una finestra WPF?

ho trovato il seguente codice in linea,

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

ma non credo che mi aiuterà perché la mia applicazione ha più finestre.

Grazie !!

+20

lascia che ti dia un consiglio amichevole, Evan. Non fare programmazione setta cargo! Seziona il codice che hai trovato online. Puoi vedere chiaramente che passa Application.Current.MainWindow, e da ciò puoi ragionare che passandogli un riferimento a una finestra diversa, otterrai la tua risposta. Non ho mai usato WindowInteropHelper, ma ero ancora in grado di rispondere alla domanda semplicemente ragionando. –

+1

hai ragione, grazie! sono stanco oggi :). – Evan

+5

Nessun problema! E non intendevo come critica, solo per essere d'aiuto. Abbiamo tutti fatto un po 'di culto del carico di tanto in tanto. :) –

risposta

111

Bene, invece di passare Application.Current.MainWindow, basta passare un riferimento a qualsiasi finestra desiderata: new WindowInteropHelper(this).Handle e così via.

32

Basta usare la finestra con la classe WindowsInteropHelper:

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

In questo momento, si sta chiedendo per la finestra principale dell'applicazione, di cui ci sarà sempre uno. È possibile utilizzare questa stessa tecnica su qualsiasi finestra, tuttavia, a condizione che sia una classe Window di System.Windows.Window.

3

Se volete maniglie finestra per TUTTI Window s della vostra applicazione, per qualche motivo, è possibile utilizzare la proprietà Application.Windows per arrivare a tutte le finestre e quindi utilizzare WindowInteropHandler per arrivare al loro maniglie, come è già stato dimostrato.

6

è possibile utilizzare:

Process.GetCurrentProcess().MainWindowHandle 
+5

Dichiara già che non vuole la finestra principale – EaterOfCode

Problemi correlati