Приведенный ниже код будет вычислять количество найденных «родительских» классов.
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindow( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As IntPtr
End Function
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, _
ByVal childAfter As IntPtr, _
ByVal lclassName As String, _
ByVal windowTitle As String) As IntPtr
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim handleCount As Integer
Dim hWnd As IntPtr
'ConsoleWindowClass is for "Command Prompt" / cmd.exe in Windows.
hWnd = FindWindow("ConsoleWindowClass", vbNullString)
If hWnd.ToInt32 <> 0 Then handleCount += 1
Do
hWnd = FindWindowEx(0, hWnd, "ConsoleWindowClass", vbNullString)
If hWnd.ToInt32 <> 0 Then
handleCount += 1
Else
Exit Do
End If
Loop
MessageBox.Show("Found " & handleCount.ToString() & " handles...", "Results", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
End Class
Исторически я всегда использовал Пэт или JK API Spy (с '98 илипоэтому) для получения дружественного представления VBA / 6 о том, как получить дескриптор окна (генерирует для вас код vb, рекомендовал бы его редактировать)
pInvoke.net - отличный ресурс длявсе Win32 API, такие как FindWindow и FindWindowEx , используемые в примере выше.Проверьте ссылки для каждой из них, поскольку они являются обширными примерами того, как правильно реализовать функции.