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?

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top