Come faccio a sapere se un dato hWnd è ancora valido?
Domanda
Io sto usando una classe di terze parti che spawn un'istanza di Internet Explorer. Questa classe ha una proprietà, hWnd, che restituisce l'HWND del processo.
In seguito su tutta la linea, mi consiglia di riutilizzare l'istanza dell'applicazione se esiste ancora, quindi ho bisogno di raccontare la mia classe di supporto per collegare ad esso. Prima di fare questo, mi piacerebbe sapere se la data hWnd è ancora valido, altrimenti mi Spawn un'altra istanza.
Come posso fare questo in C # e .NET 3.5?
Soluzione
Se si tratta di un handle di finestra, è possibile chiamare isWindow(hWnd);
Da MSDN:
Valore di ritorno
BOOL
Se nella maniglia della finestra di finestra esistente, il valore di ritorno è diverso da zero.
Se la maniglia della finestra non si identifica una finestra esistente, il valore di ritorno è zero. Osservazioni
Un thread non dovrebbe usare per un IsWindow finestra che non ha creato perché la finestra potrebbe essere distrutto dopo questa funzione è stato chiamato. Ulteriore, perché martelline vengono riciclati la maniglia potrebbe anche indicare un finestra diversa.
Tra l'altro da quando ci si trova in .NET dovrete fare qualcosa di simile:
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool IsWindow(IntPtr hWnd);