Подтвердить что ты не робот

Как я могу определить, действительно ли данный hWnd действителен?

Я использую сторонний класс, который порождает экземпляр Internet Explorer. Этот класс имеет свойство hWnd, которое возвращает hWnd процесса.

Позже в строке я могу повторно использовать экземпляр приложения, если он все еще существует, поэтому мне нужно сообщить моему вспомогательному классу, чтобы он был прикреплен к нему. Прежде чем это сделать, я хотел бы узнать, действительно ли данный hWnd действителен, иначе я создам еще один экземпляр.

Как это сделать в С# и .NET 3.5?

4b9b3361

Ответ 1

Если это дескриптор окна, вы можете вызвать isWindow(hWnd);

Из msdn:

Возвращаемое значение

BOOL

Если дескриптор окна идентифицирует существующее окно, возвращаемое значение отличен от нуля.

Если дескриптор окна не идентифицирует существующее окно, возвращаемое значение равна нулю. Замечания

Нить не должна использовать IsWindow для окно, которое оно не создало, потому что окно может быть уничтожено после эта функция была вызвана. В дальнейшем, потому что обработчики окон переработаны ручка может даже указывать на другое окно.

Кстати, поскольку вы находитесь в .NET, вам нужно будет сделать что-то вроде:

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool IsWindow(IntPtr hWnd);