В приложении VB6 я проверяю, если существует определенное окно VB.NET WinForms:IsWindow возвращает ложь для существующего дескриптора окна
Public Declare Function IsWindow Lib "user32" (ByVal hwnd As Long) As Long
If Not IsWindow(102937) Then
MessageBox("Window not found!")
End If
MessageBox показан, но окно не существует.
я осмотреть его
Debug.Print(Me.Handle.ToInt32)'it prints 102937
То, что происходит здесь не так? Возможно, я неправильно обрабатываю возвращаемое значение «IsWindow»?
спасибо.
возвращаемого значения [IsWindow] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms633528.aspx) имеет типа ' BOOL', typedef для 'int' (32-разрядное целое число со знаком). [Long] (https://msdn.microsoft.com/en-us/library/y595sc15.aspx) в VB.NET - 64 бит. Вместо этого используйте [Целое] (https://msdn.microsoft.com/en-us/library/06bkb8w2.aspx). – IInspectable
'Нить не должна использовать IsWindow для окна, которое оно не создало, потому что окно могло быть уничтожено после вызова этой функции. Кроме того, поскольку ручки окна возвращаются, ручка может даже указывать на другое окно. ' – Plutonix
Ваш дескриптор окна нечетный? В самом деле? –